【问题标题】:Node/Express + async/await + new Mongoose {useMongoClient: true} = Mocha Test failedNode/Express + async/await + new Mongoose {useMongoClient: true} = Mocha 测试失败
【发布时间】:2018-08-20 04:27:34
【问题描述】:

我更新了我正在使用 async/await 而不是回调的 API。 API 在有和没有转换的情况下都能正常工作。

我使用 Mocha/Chai 构建它类似于 TDD,并且我的所有测试都正常。

但是每次我启动我的服务时,我都会看到这条关于我任期内 MongoDB 连接的消息。

DeprecationWarning:open() 在 mongoose >= 4.11.0 中已弃用,请改用 openUri(),或者在使用 connect() 或 createConnection() 时设置 useMongoClient 选项 Db.prototype.authenticate 方法将在下一个主要版本 3.x 中不再可用,因为 MongoDB 3.6 将仅允许对 admin db 中的用户进行身份验证,并且不再允许在套接字上使用多个凭据。请使用带有身份验证凭据的 MongoClient.connect 进行身份验证。

我在网上查看,发现我现在必须添加此选项:useMongoClient: true

所以来自:

mongoose.connect(config.mongoURI[app.settings.env], (err, res) => { ... })

收件人:

mongoose.connect(config.mongoURI[app.settings.env], {useMongoClient: true}, (err, res) => { ... })

但是现在我所有的数据库搜索测试都失败了。

如果我在没有选项的情况下恢复,一切正常。

知道为什么吗?

【问题讨论】:

  • 可能是你遇到了这个错误github.com/Automattic/mongoose/issues/5399
  • 解决方法(使用useMongoClient: true)比“错误”更糟糕,这只是一个警告。
  • @robertklep 谢谢...正是这个...我正在阅读帖子以查看是否有修复!

标签: javascript node.js mongodb


【解决方案1】:

改变

mongoose.connect(config.mongoURI[app.settings.env], {useMongoClient: true}, (err, res) => { ... })

到

mongoose.connect(config.mongoURI[app.settings.env], {useNewUrlParser:true}, (err, res) => { ... })

【讨论】:

  • 您好,欢迎来到 StackOverflow,感谢您不厌其烦地回答这个问题。您的回答将受益于一些叙述,解释为什么您的更改版本更可取。谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-11-03
  • 2017-09-30
  • 2015-05-11
  • 2015-10-11
  • 2020-05-28
  • 2020-05-15
  • 1970-01-01
  • 2017-07-19
相关资源
最近更新 更多