gpt4 book ai didi

javascript - 无法找到/或实现正确的 mongoDb 方法来查找和更新子文档

转载 作者:行者123 更新时间:2023-11-30 19:41:02 25 4
gpt4 key购买 nike

我正在尝试根据其 Id 和父文档的 Id 更新子文档中的特定字段。我是新手,所以我可能误解了 mongoDb 文档,但据我所知,findOneAndUpdate 应该可以正常工作。我还尝试了 update、updateOne 以及 findByIdAndUpdate。我尝试过的任何事情都没有成功更新我的对象。

我正在尝试更新 saveBeers 数组中特定对象的评级值。

这是我的模型:

{
"_id": {
"$oid": "5c97cf50cc81525a75eb6c19"
},
"email": "email@gmail.com",
"password": "$2b$10$6ixbu2Ka.Zj0eE5kF21MLO6CiMblgu4D6IHiC7Ta52o.cZFMNw1Mm",
"__v": 0,
"savedBeers": [
{
"id": 2,
"comment": null,
"rating": 0
},
{
"id": 4,
"comment": null,
"rating": 0
}
]
}

前端:

function addRating(beerId, ratingValue){
let userId= localStorage.userId
console.log(beerId, userId, ratingValue);
$.ajax({
type: "PUT",
url: `/user/${userId}/${beerId}/${ratingValue}`,
success: addRatingSuccess,
error: addRatingError
});
function addRatingSuccess(response) {
console.log("added", response);
}
function addRatingError() {
console.log("error");
}
}

后端 userController.js:

 addRating:(req,res)=>{
console.log(req.params);
req.params.beerId = parseInt(req.params.beerId)
req.params.ratingValue = parseInt(req.params.ratingValue)
db.User.findOneAndUpdate(
{_id: ObjectId(req.params.userId), "savedBeers.id": req.params.beerId },
{ $set: { 'savedBeers.$.rating' : req.params.ratingValue } },
{new:true})
.exec(function (err, doc){
if (err){
console.log(err);
res.json({
"error": err
})
} else {
console.log(doc);
res.json({
doc
})
}
})
}

这是我在前端得到的响应:

added 
{doc: {…}}
doc:
email: "email@gmail.com"
savedBeers: Array(2)
0: {id: 2, comment: null, rating: 0}
1: {id: 4, comment: null, rating: 0}
length: 2
__proto__: Array(0)
__v: 0
_id: "5c97cf50cc81525a75eb6c19"
__proto__: Object
__proto__: Object

和后端:

{ userId: '5c97cf50cc81525a75eb6c19', beerId: 4, ratingValue: 3 }
{ savedBeers:
[ { id: 2, comment: null, rating: 0 },
{ id: 4, comment: null, rating: 0 } ],
_id: 5c97cf50cc81525a75eb6c19,
email: 'email@gmail.com',
__v: 0 }


非常感谢您抽出宝贵时间。如果有任何其他有用的信息,请告诉我。

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