带有mongodb的节点js错误:发送后无法设置标头

时间:2017-10-04 10:23:10

标签: mongodb

有两次请求发送此错误显示并且我的服务器关闭

我使用了这段代码:

exports.getAllCompany = function (req, res) {         
 Company.find({}, function (err, record) {
    if (err) {
        res.json({
            type: false,
            resultData: "Error occured: " + err
        });
    } else {
        res.json({
            type: true,
            company: record
        });
    }
});}

错误消息:

Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
at ServerResponse.header (/app/node_modules/express/lib/response.js:730:10)
at ServerResponse.send (/app/node_modules/express/lib/response.js:170:12)
at ServerResponse.json (/app/node_modules/express/lib/response.js:256:15)
at /app/server/mobile_api/AdminController/dashboard.js:279:17
at Query.<anonymous> (/app/node_modules/mongoose/lib/model.js:3388:16)
at /app/node_modules/kareem/index.js:259:21
at /app/node_modules/kareem/index.js:127:16
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)

2 个答案:

答案 0 :(得分:3)

终于经过很长时间才能解决问题。按照我的回答谁有同样的问题,

 exports.getAllCompany = function (req, res) { 
   res.writeHead(200, {"Content-Type": "application/json"});        
   Company.find({}, function (err, record) {
     if (err) {
        res.end(JSON.stringify({
         type: false,
         resultData: "Error occured: " + err
        }));
     } else {
        res.end(JSON.stringify({
         type: true,
         company: record
     }));
   }
  });
}

答案 1 :(得分:0)

很可能你不止一次地调用res.send()

分享/app/server/mobile_api/AdminController/dashboard.js文件会很有帮助