Javascript MongoDB UpdateOne未更新,尽管它给出了一条成功消息
这是我的数据库数据Javascript MongoDB UpdateOne未更新,尽管它给出了一条成功消息,javascript,mongodb,Javascript,Mongodb,这是我的数据库数据 "reviewers": [ { "enrolledEventID": [], "enrolledId": [], "isOrganiser": false, "isAdmin": false,
"reviewers": [
{
"enrolledEventID": [],
"enrolledId": [],
"isOrganiser": false,
"isAdmin": false,
"forms": [],
"userNotification": [],
"isReviewer": true,
"submissionsToReview": [],
"_id": "5f926ea7c2cd694070f02c0a",
"fullname": "Salman",
"email": "salman1@gmail.com",
"password": "$2a$10$NdRPKgYOvJt7.G1Ijh6Ii.sJnX2s4M48HyCdfmwU2OQ1JnFOD75LS",
"__v": 0,
"avatarImageSource": "https://ui-avatars.com/api/?name=Salman&size=64&rounded=true&background=random",
"scores": [
0,
0,
0
]
},
{
"enrolledEventID": [],
"enrolledId": [],
"isOrganiser": false,
"isAdmin": false,
"forms": [],
"userNotification": [],
"isReviewer": true,
"submissionsToReview": [],
"_id": "5f9655935c8ee155e86d723c",
"fullname": "sadsad",
"email": "sadsad@sadsad.com",
"password": "$2a$10$T1yAtGrQy1UZnLoD3Bgm..yw9f2.pQqVsdlB7g5a9KK19TaEvwTNK",
"__v": 0,
"avatarImageSource": "https://ui-avatars.com/api/?name=sadsad&size=64&rounded=true&background=random",
"scores": [
3,
2,
5
]
},
{
"enrolledEventID": [],
"enrolledId": [],
"isOrganiser": false,
"isAdmin": false,
"forms": [],
"userNotification": [],
"isReviewer": true,
"submissionsToReview": [
"5f7fe0fba09f2f30189d9b05"
],
"_id": "5f99126693830c0c0ccc6db0",
"fullname": "sad123",
"email": "sad123@sad.com"
]
我想更新评论员内部的分数,以下是我的代码:
Enroll.updateOne(
{
_id: enrollID,
"reviewers._id": userID,
},
{
$set: {
"reviewers.$.scores": req.body.scores,
},
},
(errUpdate, resultUpdate) => {
if (errUpdate) {
return res.status(500).json({ success: false, error: errUpdate });
} else {
return res.status(200).json({ success: true, data: resultUpdate });
}
}
);
它给出了一条成功消息,但数据没有更新。我仍然去检查,分数和以前一样。我在哪里犯错?通常Mongo错误会给我一个线索,但这次没有。我假设
req.body.scores
是一个分数数组。如果是,请尝试以下方法:
Enroll.updateOne(
{
_id: enrollID
},
{
$set: {
scores: req.body.scores,
},
},
(errUpdate, resultUpdate) => {
if (errUpdate) {
return res.status(500).json({ success: false, error: errUpdate });
} else {
return res.status(200).json({ success: true, data: resultUpdate });
}
}
);
reviewers
是一个集合还是enroll
集合中的一个字段?如果是后者,那么您的查询是正确的,请确保在match子句中传递的ID是正确的console.log
记录所有内容,并确保它们具有正确的数据类型。