【问题标题】:Mongoose findOneAndUpdate() not updating the collection in mongodb using NodeJSMongoose findOneAndUpdate() 不使用 NodeJS 更新 mongodb 中的集合
【发布时间】:2017-08-28 23:17:09
【问题描述】:

我是一个相当新的开发人员,试图在 API Endpoints 的帮助下使用 NodeJS、MongoDB 和 Mongoose 开发一个简单的 CRUD 应用程序。使用 Mongoose 驱动程序的 findOneAndUpdate 方法更新文档时,我没有得到正确的结果。

集合是在 mongoimport 命令的帮助下通过导入 CSV 文件形成的。考虑到我有以下文档。

{
"_id" : ObjectId("599c8da6b18e3117b09ea299"),
"MetaKey" : "lastWPSyncedStatus",
"MetaValue" : "Running"

}

这里的 MetaKey 是 lastWPSyncedStatus,其对应的值是 Running。

我需要做的就是当“/test/client”端点被命中时,我想将 lastWPSyncedStatus 更新为 STOP。该 URL 使用 PUT HTTP 方法提交以进行更新。

RosterOptions.findOneAndUpdate(
    {
        'MetaKey' : 'lastWPSyncedStatus'

    },
    {
        $set:
            {
                'MetaValue': 'STOP'
            } 
    },
    {
        new: true

    },
    function(err,data){
        if(err){
            res.send(err);
        }
        res.json(data);
        // console.log(data);
    }
)

我正在尝试将 MetaKey 为“lastWPSyncedStatus”的文档的 MetaValue 更新为“STOP”。我尝试在 nodejs 中提交查询,它返回没有任何错误,但 mongodb 没有更新。此外,当我为 mongoose 设置调试时,以下查询将提交给 mongoose。

Mongoose: rosterOptions.findOne({ MetaKey: 'lastWPSyncedStatus' }, { new: true, fields: {} })

输出是:

{
"_id": "599c8da6b18e3117b09ea299",
"MetaKey": "lastWPSyncedStatus",
"MetaValue": "Running"

}

我无法确定问题所在。我也尝试使用更新方法,但得到以下输出。

{
"ok": 0,
"n": 0,
"nModified": 0

}

当我尝试在 mongodb 中运行函数 update() 时,我的文档已正确更新。

我参考了mongoose documentation 并尝试以类似的方式实现它。如果有人能指导我解决问题,我会很高兴。

【问题讨论】:

  • 你能分享RosterOptions集合的Mongoose Schema吗?
  • 嘿,@ryder 我已经正确解决了这个问题。我在正确定义架构时犯了一个错误,因此我遇到了这个问题。感谢您的快速回复。

标签: mongoose


【解决方案1】:

我已找到发布问题的答案。我在正确定义模式时犯了一个错误,因为 mongoose 无法正确识别我的集合。我通过修改架构解决了这个问题。将其标记为答案。

【讨论】:

  • 一直在兜圈子,谢谢分享!
  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2019-04-19
  • 2019-08-07
  • 2017-08-13
  • 2018-07-29
相关资源
最近更新 更多