当用户点击某个按钮并将其stormpath用户ID(req.user.href)存储在数组中时,我试图增加upvotes。
尝试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不会增加。
尝试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数组不会更新。
尝试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);
})
结果:什么都没发生
我想做什么:更新Upvoters数组并将upvotes增加1。
答案 0 :(得分:2)
您需要将$inc
和$push
运算符放入同一个对象中:
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);
})