【问题标题】:NodeJS: Can't set headers after they are sent?NodeJS:发送后无法设置标题?
【发布时间】:2017-03-14 02:53:59
【问题描述】:

执行此命令时遇到问题。当我删除多个项目时会发生这种情况。 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('/');
         }

 });

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 2015-12-20
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多