我要在没有一个对象的情况下更新架构。
当我更新架构时,req.body使用$ set自动更新架构。 但我想防止更新所有架构。 例如req.body可以包含用户角色,这种情况下我不想更新用户角色。
User.findOneAndUpdate(
{ _id: req.user._id },
{ $set: req.body },
{ new: true, runValidators: true },
)
所以我想在用户架构中更新所有没有角色对象的主体。
答案 0 :(得分:0)
为此,您可以做到
User.findOne({ _id: req.user._id },(err,user)=>{
if(err) throw err;
user.FieldYouWantToUpdate = req.body.name // likewise add your values
// then save the document
user.save();
});
在这里,使用猫鼬进行更新时,您可以更好地控制自己。 您要使用用户ID进行查询并获得用户。这样就可以在findOne()函数的回调中访问用户对象。 之后,使用用户对象,您可以根据需要更改用户,可以是单个字段,2个字段,也可以是所有字段。您可以完全控制更新