更新 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的主要内容,如果未能解决你的问题,请参考以下文章

我正在使用 findOne 然后更新我得到的一个文档,但我想使用 find 以便我可以找到所有文档,然后将它们全部更新

TypeORM 在使用 .find()/.findOne() 时返回 undefined

节点,猫鼬“findOne”在另一个集合的“find”内的一个集合上

MongoDB常用基本操作

NestJS TypeORM MongoDB 无法使用 find 或 FindOne 搜索存储库

Mongoose findOne() 和 find() 返回无效值,它们应该分别返回 null / 空列表