首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongoose .update()什么也不做

Mongoose .update()什么也不做
EN

Stack Overflow用户
提问于 2020-02-25 12:01:01
回答 5查看 62关注 0票数 0

我正在查找一个名为Filter (myFilter=Filter.findById(id))的文档。我更新了一些字段,然后尝试使用myFilter.update()进行更新。什么都没发生。有效的方法是

代码语言:javascript
运行
复制
myFilter.New=false; 
myFilter.save()

这是很好的,但随机导致竞争条件。我使用update是错误的吗?

下面是我的实现:

代码语言:javascript
运行
复制
    let myFilter = await Filter.findById(myUser.filterID);

    if (!_.isUndefined(distance)) {
      myFilter.searchParams.distance = distance;
    }

    if (!_.isUndefined(distanceMetric)) {
      myFilter.searchParams.distanceMetric = distanceMetric;
    }

    await myFilter.update();
EN

回答 5

Stack Overflow用户

发布于 2020-02-25 12:09:00

基于Mongoose DocsModel.update()需要带两个参数(filterdoc)。

然而,在您的情况下,我建议您直接使用myFilter.save()它应该可以工作,而不需要设置myFilter.New=false

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 12:14:12

您没有正确使用.update()。您需要提供文档的_id或其他索引作为查询,然后提供要更新的数据。.save()就是这里的方法。您可以在此处查找更新https://docs.mongodb.com/manual/reference/method/db.collection.update/

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 12:18:33

我找到了另一个类似的问题。看起来我们应该使用findOneandUpdate :/

但我只想像上面那样有条件地设置cetain字段。如果不是这样的话,请告诉我。

这对我很有效:

代码语言:javascript
运行
复制
    await Filter.findByIdAndUpdate(myUser.filterID, {
      $set: {
        searchParams: {
          ...myFilter.searchParams
        }
      }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60387327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档