如何在猫鼬中没有一个对象的情况下更新架构

时间:2019-01-16 13:06:47

标签: node.js mongodb mongoose

我要在没有一个对象的情况下更新架构。

当我更新架构时,req.body使用$ set自动更新架构。 但我想防止更新所有架构。 例如req.body可以包含用户角色,这种情况下我不想更新用户角色。

User.findOneAndUpdate(
 { _id: req.user._id },
 { $set: req.body },
 { new: true, runValidators: true },
)

所以我想在用户架构中更新所有没有角色对象的主体。

1 个答案:

答案 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个字段,也可以是所有字段。您可以完全控制更新