Node.js重定向错误:发送后无法设置标头

时间:2016-01-27 06:04:47

标签: node.js mongodb header response

我在node.js中提交表单后收到一条重定向错误消息,因此在将数据插入mongodb后,我收到一条错误消息“无法在发送后设置标题”。

var friendslist = JSON.parse(JSON.stringify(req.body));

    for(var i=0; i<friendslist.length; i++){
        var userid = friendslist[i];
        var name = friendslist[i];
        var number = friendslist[i];
        var status = friendslist[i];
        var currentUserid = friendslist[i];

        var friends = [{"userid" : userid.name, 
                        "name" : name.name,
                        "number" : number.number,
                        "status" : status.status,
                        "currentUserid" : currentUserid.currentUserid}];

        collection.insert(friends, function(err, docs) {
            if (err) {
                res.json({error : "database error"});
            }
            else {
                collection.find().toArray(function(err, users) {
                    res.json(users);
                });
            }
        }); 
    }

所以在将所有数据插入mongodb之后,我向用户发送了一个json响应,但之后我收到了该错误消息。

请仔细阅读我的帖子并向我推荐一些解决方案。

1 个答案:

答案 0 :(得分:0)

首先,如果您希望得到响应,请不要在循环中进行数据库调用。 此外,使用快递时,只有在您准备好向用户发送数据时才拨打res.sendres.json

var friendslist = JSON.parse(JSON.stringify(req.body)); 
var friends = [];
for(var i=0; i<friendslist.length; i++){
    var friend = friendslist[i]

    friends.push({
        "userid" : friend.userid, 
        "name" : friend.name,
        "number" : friend.number,
        "status" : friend.status,
        "currentUserid" : friend.currentUserid
    }); 
}

collection.insert(friends, function(err, docs) {
    if (err) {
        res.json({error : "database error"});
    }
    else {
        collection.find().toArray(function(err, users) {
            res.json(users);
        });
    } 
});