更新 findOne()/find()/findById() 返回的文档 - mongoose

Posted

技术标签:

【中文标题】更新 findOne()/find()/findById() 返回的文档 - mongoose【英文标题】:Update a document returned by findOne()/find()/findById() - mongoose 【发布时间】:2020-05-13 17:39:48 【问题描述】:

我想知道是否有任何方法可以更改 mongoose find()findOne()findById() 方法返回的文档对象的可用字段的值,并使用应用于数据库的更改来更新它们。下面的代码 sn-p 是我期望完成我想要的工作:

User.findOne( email: email )
      .then(user => 
        if (user) 
            user.fieldToUpdate = "Updated value"; // Here I'm getting the field and updating it with the new value;
            user.save().then().catch(); // Here I'm updating the document to the database, expecting for a promise object
         else 
          const error = new Error("No such user in the database.");
          error.httpStatusCode = 422;
          next(error);
        
      )
      .catch(error => 
        next(error);
      );

【问题讨论】:

updateOne 【参考方案1】:

您编写的代码 sn-p 可以正常工作,但如果您只需要更新找到的文档:

User.findOneAndUpdate( email ,  email: 'sample@test.com' )
  .then((err, user) => 
    //
  

More on the Docs

【讨论】:

谢谢!我认为使用 findOneAndUpdate() 更方便。

以上是关于更新 findOne()/find()/findById() 返回的文档 - mongoose的主要内容,如果未能解决你的问题,请参考以下文章