微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我收到“错误:发送后无法设置标题”?

如何解决为什么我收到“错误:发送后无法设置标题”?

当 API POST 被 JSON 数据命中时,我试图将数据写入 MS sql 服务器。

var express = require('express');
var app = express();
var sql = require('mssql');

// Connection string parameters.
var sqlConfig = {
    user: 'sa',password: 'Forward@123',server: '115.187.45.88',database: 'Example',requestTimeout: 1000,options: {
      "encrypt": false,"enableArithAbort": true
  }
}

// Start server and listen on http://localhost:8080/
var server = app.listen(8080,function () {
    var host = server.address().address
    var port = server.address().port

    console.log("app listening at http://%s:%s/SendData",host,port)
});

app.use(
    express.urlencoded({
      extended: true
    })
  )
  
app.use(express.json())

app.post('/SendData',function (req,res) {

let data = '';
  req.on('data',chunk => {
    data += chunk;
  })
  
  req.on('end',() => {
    var obj=JSON.parse(data);
    for(var i=0;i<obj.length;i++){
        console.log(obj[i]);

        //write in db

        var sqlString="INSERT INTO [dbo].[EmpTable] ([id],[fname],[lname]) VALUES ("+obj[i].id+",'"+obj[i].fname+"','"+obj[i].lname+"')";
        console.log("sqlString ----- "+sqlString);
        executeQuery(res,sqlString);

    }
  })
    res.setHeader('Access-Control-Allow-Origin','*');  
    return res.status(200).json({"Message":"Success!!!"});
    
});





var executeQuery = function(res,query){
    sql.connect(sqlConfig,function(err){
        if(err){
            console.log("there is a database connection error -> "+err);
            res.send(err);
        }
        else{
            // create request object
            var request = new sql.Request();

            // query to the database
            request.query(query,function(err,result){
                if(err){
                    console.log("error while querying database -> "+err);
                    res.send(err);
                }
                else{
                    res.send(result);
                    sql.close();
                }
            });
        }
    });
}

我收到以下错误

_http_outgoing.js:491 throw new Error('发送后无法设置标题。');

错误:发送后无法设置标头。 在 validateHeader (_http_outgoing.js:491:11) 在 ServerResponse.setHeader (_http_outgoing.js:498:3) 在 ServerResponse.header (E:\Node Workspace\node-post-api\node_modules\express\lib\response.js:771:10) 在 ServerResponse.send (E:\Node Workspace\node-post-api\node_modules\express\lib\response.js:170:12) 在 ServerResponse.json (E:\Node Workspace\node-post-api\node_modules\express\lib\response.js:267:15) 在 ServerResponse.send (E:\Node Workspace\node-post-api\node_modules\express\lib\response.js:158:21) 在 E:\Node Workspace\node-post-api\post-api-db-write.js:80:25 在 _query (E:\Node Workspace\node-post-api\node_modules\mssql\lib\base\request.js:420:9) 在 Request.tds.Request.err [as userCallback] (E:\Node Workspace\node-post-api\node_modules\mssql\lib\tedious\request.js:479:15) 在 Request.callback (E:\Node Workspace\node-post-api\node_modules\tedious\lib\request.js:56:14)

解决方法

当消息发布到 /SendData 时,您说:

res.setHeader('Access-Control-Allow-Origin','*');  
return res.status(200).json({"Message":"Success!!!"});

这会发送您可以对请求做出的唯一响应。

调用executeQuery(res,sqlString),其中您:

res.send(result);

那个发送您可以对请求做出的唯一响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?