执行此命令时遇到问题。当我删除多个项目时会发生这种情况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('/');
}
});
答案 0 :(得分:2)
错误告诉您发生了什么,您为每个项目调用res.end,但每个请求只能执行一次。请注意,end()在send()和json()之类的引擎下调用。
要么在不等待所有更新发生的情况下做出响应,要么在它们全部发生之后再做。但是不要为每次删除都这样做。