错误:在节点js MVC方法中发送标头后无法设置标头

时间:2017-08-18 07:46:52

标签: node.js mongodb express

我收到以下错误...

   events.js:160
     throw er; // Unhandled 'error' event
     ^
 Error: Can't set headers after they are sent.
      at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11)
      at ServerResponse.header 
      (C:\level3proj\node_modules\express\lib\response.js:730:10)

..当我执行以下代码时

    var mongoose = require('mongoose');
    var express = require('express');

    // express router used to define routes
    var userRouter= express.Router();

    var userModel = mongoose.model('User');
    var allUsers = [];
    var fs = require('fs');

    module.exports.controller = function(app) {
      userRouter.get('/all',function(req,res) {
        res.send("this is a route to get information on particular ");
        userModel.find({},function(err,allUsers) {
          if(err) {
            res.send(err);
          } else {
            res.send(allUsers);
          }
        }); // end user model
      }); // end get all users
      app.use('/users', userRouter);
    } // end controller code

加载时

http://localhost:3000/users/all

显示结果,同时它在控制台中抛出错误。

为什么我在控制台上收到错误?

2 个答案:

答案 0 :(得分:0)

您无法两次发送http response

您已将其发送至:

res.send("this is a route to get information on particular ");

然后您无法进行数据库查询并再次发送响应。

答案 1 :(得分:0)

您发送响应2次。第一个是在这里

 res.send("this is a route to get information on particular ");

在此之后

if(err) {
    res.send(err);
} else {
    res.send(allUsers);
}

删除第一次发送,您的回复将起作用

相关问题