Node.js 通过findOneAndUpdate更新文档后,两个文档变得相同
我想用findOneAndUpdate通过字段名(riderUserId)更新文档 它所做的不是通过riderUserId更新文档Node.js 通过findOneAndUpdate更新文档后,两个文档变得相同,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我想用findOneAndUpdate通过字段名(riderUserId)更新文档 它所做的不是通过riderUserId更新文档 updateProfile: function(req, res) { var riderUserID = req.params.riderUserID; profileModel.findOneAndUpdate(riderUserID, req.body, { overwrite: true, new: t
updateProfile: function(req, res) {
var riderUserID = req.params.riderUserID;
profileModel.findOneAndUpdate(riderUserID, req.body,
{ overwrite: true, new: true }, (error, response) => {
if (error) {
res.json(error);
console.error(error);
return;
}
res.json(response);
});
},
这是我的模型
var profileSchema = new Schema({
name: { type: String },
surname: { type: String },
gender: { type: String },
email: { type: String },
riderUserId: { type: String },
mobileNumber: { type: Number },
birthYear: { type: Number },
nationality: { type: String },
idNumber: { type: String },
quickDescription: { type: String },
numberPlate: { type: String },
make: { type: Number },
model: { type: String },
memberType: { type: String },
accountHolderName: { type: String },
accountNumber: { type: Number },
nameOfBank: { type: String },
branchCode: { type: Number },
profilePicture: { type: String },
carPicture: { type: String },
music: { type: String },
conversations: { type: String },
pets: { type: String },
smoking: { type: String },
emailVerification: { type: Boolean },
phoneVerification: { type: Boolean },
idVerification: { type: Boolean },
});
这里有两份文件
{
"_id" : ObjectId("5bed37dc84fd420002791e0c"),
"email" : "shoba.hasini@gmail.com",
"riderUserId" : "ZH8irbzGt8WULt2lFSIU5J48Alz2",
"name" : "Shoba",
"surname" : "Hasini",
"gender" : "",
"mobileNumber" : null,
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("5bed37f484fd420002791e0d"),
"email" : "kartikajas@gmail.com",
"riderUserId" : "e1FUpfsDiwSVxcz50ZbhjWKfKGM2",
"name" : "Karthik",
"surname" : "Keyan",
"gender" : "",
"mobileNumber" : null,
"__v" : NumberInt(0)
}
通过findOneAndUpdate更新文档后,两个文档变得相同
,,
{
"_id" : ObjectId("5bed37dc84fd420002791e0c"),
"name" : "Karthik",
"surname" : "Keyan",
"gender" : "male",
"email" : "kartikajas@gmail.com",
"riderUserId" : "e1FUpfsDiwSVxcz50ZbhjWKfKGM2",
"mobileNumber" : NumberInt(90087),
"idVerification" : false
}
{
"_id" : ObjectId("5bed37f484fd420002791e0d"),
"email" : "kartikajas@gmail.com",
"riderUserId" : "e1FUpfsDiwSVxcz50ZbhjWKfKGM2",
"name" : "Karthik",
"surname" : "Keyan",
"gender" : "",
"mobileNumber" : null,
"__v" : NumberInt(0)
}
为什么不使用riderId e1FUpfsDiwSVxcz50ZbhjWKfKGM2更新一个文档呢在您的代码中,您正在将
riderUserID
(一个字符串)传递到findOneAndUpdate
。但是mongoose实际上将对象作为搜索查询参数。您可能需要传递类似{id:riderUserID}的对象。如果您的riderUserID是mongo对象id
从您的架构中,我可以看到您的riderUserID是一个字符串。请将findOneAndUpdate(riderUserID,
替换为findOneAndUpdate({riderUserID},
),然后重试
更多信息
为简洁起见,我删除了几个字段。在您的代码中,您将riderUserID
(一个字符串)传递给findOneAndUpdate
。但是mongoose实际上将对象
作为输入。您可能需要传递一个类似{id:riderUserID}的对象
。如果您的riderUserID是一个mongo对象id
。您是什么意思?riderUserID不是一个mongo对象id,从您的架构中我可以看出您的riderUserID
是一个字符串。请将findOneAndUpdate(riderUserID,
替换为findOneAndUpdate({riderUserID},
),然后重试。