快速/节点错误:发送后无法设置标头

时间:2016-02-09 07:53:02

标签: node.js express

这是一个简单的get请求,显示错误“无法在发送后设置标头”。我将它发送回如下所示的控制器。它确实成功记录了数据库(doc)的内容,因此连接良好,只有在写入“res.json(doc)”行时才会抛出此错误。还有.each()方法的替代方法吗?它告诉我它已被弃用。

server.js

var app = express();

//db connection
MongoClient.connect("mongodb://userName:secretPassword@aws-us-east-1-portal.7.dblayer.com:10712,aws-us-east-1-portal.10.dblayer.com:10316/dbName", function(err, db) {
    if (err) throw err;
    var contactList = db.collection("contactList");

app.get('/contactList', function (req, res) {

     var cursor = contactList.find();
     cursor.each(function(err, doc) {
         res.json(doc);
     });

});

controller.js

$http.get('/contactList').success(function (response) {
    $scope.contactList = response;
});

2 个答案:

答案 0 :(得分:1)

您只需触发一次res.json()即可。这是您发送给客户端的响应。

您可能想要做的是聚合结果并将其作为单个集合传递

答案 1 :(得分:1)

使用toArray方法:

app.get('/contactList', function (req, res) {
  contactList
    .find({})
    .toArray(function(err, docs) {
      // TODO: Error handling
      res.json(docs);
    });
}