2
我想在用户点击某个按钮时增加upvotes,并在数组内存储他的stormpath用户ID(req.user.href)。mongoose findByIdAndUpdate只更新文档中的一个字段
TRY 1:
if (newUpvoters = found_post[0].upvoters.indexOf(req.user.href) == -1) {
Problem.findByIdAndUpdate(found_post[0].id,
{ $push: { upvoters: req.user.href }}
, {$inc: { upvotes : 1 } }, function (err, post) {
if (err) return next(err);
res.json(post);
})
}
结果: 只有upvoters阵列被正确地更新。 Upvotes不会递增。
TRY 2:
Problem.findByIdAndUpdate(found_post[0].id,
{$inc: { upvotes : 1 } },
{ $push: { upvoters: req.user.href }}, function (err, post) {
if (err) return next(err);
res.json(post);
})
结果: 只有Upvotes得到增加,upvoters阵列不更新。
TRY 3:
Problem.findByIdAndUpdate(found_post[0].id,
{$set :
{$inc: { upvotes : 1 } ,
$push: { upvoters: req.user.href }}
}, function (err, post) {
if (err) return next(err);
res.json(post);
})
结果: Nothing发生
什么,我想做的事:更新Upvoters阵列和增量upvotes由1
OMG。非常感谢! :-) 我花了2个小时试图解决这个问题。 :-( –
)正确的语法是:'Model.findByIdAndUpdate(id,[update],[options],[callback])'。参见http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate –