Node.js 如何等待mongoose列表项被推送?
我有一个快速路由,当用户点击向线程提交新评论时触发。路由通过将新注释推到mongoose对象中列表的末尾,然后将用户重定向回他们来自的页面来处理此问题。这应该会向他们显示所有评论的列表,包括他们刚刚添加的评论,但事实并非如此。而是显示未修改的列表。需要重新加载以显示他们刚刚添加的注释 有关职能如下:Node.js 如何等待mongoose列表项被推送?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个快速路由,当用户点击向线程提交新评论时触发。路由通过将新注释推到mongoose对象中列表的末尾,然后将用户重定向回他们来自的页面来处理此问题。这应该会向他们显示所有评论的列表,包括他们刚刚添加的评论,但事实并非如此。而是显示未修改的列表。需要重新加载以显示他们刚刚添加的注释 有关职能如下: router.post('/get/:faultId/new_comment', function(req, res, next) { var commenter = req.body.firs
router.post('/get/:faultId/new_comment', function(req, res, next) {
var commenter = req.body.first_name + " " + req.body.last_name;
var comment = req.body.new_comment_text
var datetime = Date.now();
var comment_object = commentCreate(commenter, comment, datetime);
FaultReport
.findOne({
'_id': req.params.faultId
})
.exec(function(err, report) {
if (err) return console.error(err);
report.comment.push(comment_object);
report.save();
});
res.redirect('/api/get/' + req.params.faultId);
});
我显然误解了什么。如何在重定向用户之前等待数据库更新?将回调传递到
报告。保存并从那里调用res.redirect
:
router.post('/get/:faultId/new_comment', function(req, res, next) {
var commenter = req.body.first_name + " " + req.body.last_name;
var comment = req.body.new_comment_text
var datetime = Date.now();
var comment_object = commentCreate(commenter, comment, datetime);
FaultReport
.findOne({
'_id': req.params.faultId
})
.exec(function(err, report) {
if (err) return console.error(err);
report.comment.push(comment_object);
report.save(function(err) {
res.redirect('/api/get/' + req.params.faultId);
});
});
});
完美的谢谢