NodeJS:发送后不能设置标头?

时间:2017-03-14 02:53:59

标签: node.js

执行此命令时遇到问题。当我删除多个项目时会发生这种情况NodeJS返回错误,但是当我重新启动服务器时,项目被成功删除。

这是我的代码:

    router.delete('/:userID/hobbies', function(req, res, next)
    {
        var userID = req.params.userID;
        if (req.user._id == userID)
         {
            hobbiesData.find({owner: userID, isComplete: true},function(err, userHobbies) {
                    userHobbies.forEach(function (userHobby)
                     {
                        usersData.findByIdAndUpdate(
                            userID,
                            { $pull: { hobbies: userHobby._id }},
                            { new: true, upsert: true },
                            function(err, results)
                             {
                                if(err)
                                 {
                                    return res.end(err);
                                 }
                                else
                                 {
                                    userHobby.remove(function(err) {
                                        if(err)
                                         {
                                            return res.end(err);
                                         }
                                        else
                                         {
                                            return res.json(results);
                                         }
                                    });
                                 }
                             }
                        );
                     });
            });
         }

        else
         {
            res.redirect('/');
         }

 });

1 个答案:

答案 0 :(得分:2)

错误告诉您发生了什么,您为每个项目调用res.end,但每个请求只能执行一次。请注意,end()在send()和json()之类的引擎下调用。

要么在不等待所有更新发生的情况下做出响应,要么在它们全部发生之后再做。但是不要为每次删除都这样做。