我有一个接受post
请求的代码,并将一个字符串插入mongodb
数据库。
app.post('/post_comment', function(req, res) {
Predicts.findOne({'id': parseInt(req.body.id)}, function(err, card) {
console.log('')
console.log(card)
console.log('')
if (card) {
Users.findOne( { 'userid': req.user ? req.user.userid : undefined }, function(err, user) {
console.log(user)
console.log('')
Predicts.update({'_id': card._id},
{$push : {comments: {login: user ? user.login : 'anonymous', content: '123'}}},
function(err, card1) {throw(err);
console.log('---')
console.log(card1);
})
})
}})
res.redirect('back')
})
此代码导致node
进程完全冻结。只有重新启动node
进程才有帮助。
调试显示,前四个console.log
操作按预期工作,但console.log('---')
不会发生。这意味着Predicts.update
不起作用,但它确实有效,我可以在数据库中看到此请求的结果。什么是故障?
更新:我已将Predicts.update
替换为Predicts.find
,但结果仍然相同。 Collback不起作用,node
进程冻结。
Upd2:我确定node
没有冻结,但只返回mongodb
不需要的内容。
答案 0 :(得分:1)
根据node-mongodb文档,update
函数如下所示:
collection.update(criteria, objNew, options, [callback]);
因此,如果您想使用回调,则应该是第4个参数,第3个应该是您的选项(例如multi:true
)或{}
。