StackOverflow的人,我正在燃烧这个问题,我该如何增加一个 猫鼬的数值?我已经尝试了下面的代码,虽然它不起作用。我试图在提交表单时将值增加1。以下是我的代码:
app.post('/like', function (req, res) {
var id = req.body.id;
var query = {_id: id};
var post = Meme.findOne(query);
Meme.findOneAndUpdate(post, post.likes: post.likes+1)
});
非常感谢你的宝贵帮助!
答案 0 :(得分:34)
您可以将$inc
用于此目的。
试试这个:
var id = req.body.id;
Meme.findOneAndUpdate({_id :id}, {$inc : {'post.likes' : 1}}).exec(...);
有关$ inc的更多信息,请阅读MongoDB $inc documentation
答案 1 :(得分:4)
在猫鼬版本5中,需要附加选项“ useFindAndModify”:
// Make Mongoose use mongoDB's `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
Meme.findOneAndUpdate( {_id: res._id},
{$inc : {'UID' : 1}},
{new: true},
function(err, response) {
// do something
});
答案 2 :(得分:2)
Meme.findOneAndUpdate({ _id: res._id }, { $inc: {'post.like': 1 } }, {new: true },function(err, response) {
if (err) {
callback(err);
} else {
callback(response);
}
答案 3 :(得分:0)
您也可以尝试此操作,我使用此查询来喜欢该帖子
app.put('/like', (req, res) => {
Meme.findByIdAndUpdate(req.body.postId,{
$push:{likes: req.user._id}
}, {
new: true
}).exec((err, result) => {
if(err){
return res.status(400).json({error: err})
}else{
res.json(result)
}
})
})