【问题标题】:The options [useFindAndModify] is not supported不支持选项 [useFindAndModify]
【发布时间】:2021-08-31 16:14:23
【问题描述】:

使用 mongodb-4.0.10 和 mongoose-5.2.10

在 mongoose 配置中添加了 useFindAndModify: false 以避免出现以下警告:

弃用警告:猫鼬:findOneAndUpdate()findOneAndDelete() 没有将 useFindAndModify 选项设置为 false 已弃用。

DeprecationWarning:collection.findAndModify 已弃用。利用 findOneAndUpdate、findOneAndReplace 或 findOneAndDelete。

但现在“不支持 [useFindAndModify] 选项”正在运行应用程序。

【问题讨论】:

  • 你在哪里设置useFindAndModify : false。它应该在全局mongoose 级别mongoose.set('useFindAndModify', false); 或者可以传递给连接mongoose.connect(uri, { useFindAndModify: false });
  • @ambianBeing 我正在传递 mongoose.connect 中的选项。

标签: node.js mongodb mongoose


【解决方案1】:

对于遇到此问题的其他人,如果您使用的是 mongoose 版本 6+,则不支持 useFindAnyModify

要解决这个问题,我们可以删除 useFindAnyModify 或降级 mongoose 版本以使用 v5+。

【讨论】:

    【解决方案2】:

    首先,将 mongoose 更新到 ^latest (5.8.X) 版本。

    然后重写你的代码并尝试像这样使用它

    mongoose.connect(`mongodb+srv://${login}:${password}@${hostname}/${auth_db}`, {
        useNewUrlParser: true,
        useFindAndModify: false,
        retryWrites: true,
        w: "majority",
    });
    
    mongoose.Promise = global.Promise;
    

    另外,根据findOneAndUpdate 上的mongoose docs,您可以使用findOne 并通过在结果上触发.save 来更新文档。

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 2021-10-27
      • 2018-06-10
      • 2021-10-31
      • 2023-02-24
      • 2021-12-21
      • 2021-09-25
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多