0
我有一個node.js應用程序,使用Express進行路由,並使用Mongoose進行數據庫訪問。Node.js刪除請求
我有這個HTTP刪除請求,刪除數據庫中的條目,如果滿足某些要求。
.delete(function (req, res) {
Movie.findOne({_id: req.params.id
}, function (err, movie) {
if (err)
res.send(err);
for (var i = 0, len = movie.actors.length; i < len; i++) {
if (movie.actors[i].actor == "Chuck Norris"){
res.status(403).send({ message: 'Cannot delete Chuck Norris' });
}
else {
Movie.remove({_id: req.params.id
}, function (err, movie) {
if (err)
res.send(err);
res.json({message: 'Movie deleted'});
});
}
}
});
});
如果我發送一個HTTP與膠片的ID刪除,它會檢查在演員名單,如果查克·諾里斯是在電影,我會阻止刪除,如果他是存在的。
的問題是,我的控制檯回我這個錯誤:
Error: Can't set headers after they are sent.
所以我相信,隨着我的回調這個問題。由於node.js的異步性質,「緩慢」的數據庫調用使得我的.delete在findOne完成之前發送了頭文件?
如何在刪除前驗證併發送正確的http錯誤代碼?
我把它改成了一個回車,稍微調整了一下,現在就起作用了。謝謝 ! – metraon 2014-11-04 19:00:13