gpt4 book ai didi

node.js - mongoose findByIdAndUpdate 仅更新文档中的一个字段

转载 作者:可可西里 更新时间:2023-11-01 10:20:29 24 4
gpt4 key购买 nike

我试图在用户点击某个按钮时增加赞成票,并将他的 stormpath 用户 ID (req.user.href) 存储在一个数组中。

尝试 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 数组被正确更新。赞成票不会增加。

尝试 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。

最佳答案

您需要将 $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);
})

关于node.js - mongoose findByIdAndUpdate 仅更新文档中的一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com