我有一个数据库包装类,它建立与某些MongoDB实例的连接:
async connect(connectionString: string): Promise<void> {
this.client = await MongoClient.connect(connectionString)
this.db = this.client.db()
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个警告:
(node:4833)DeprecationWarning:不推荐使用当前的URL字符串解析器,将来的版本将删除它.要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect.
该connect()方法接受一个MongoClientOptions实例作为第二个参数.但它没有一个叫做的属性useNewUrlParser.我还尝试在连接字符串中设置这些属性,如下所示:mongodb://127.0.0.1/my-db?useNewUrlParser=true但它对这些警告没有影响.
那么如何设置useNewUrlParser删除这些警告?这对我很重要,因为脚本应该以cron身份运行,而这些警告会导致垃圾邮件垃圾邮件.
我mongodb在版本中使用驱动程序3.1.0-beta4和相应的@types/mongodb包3.0.18.它们都是最新的可用npm install.
使用旧版本的mongodb驱动程序:
connect()
我在node.js应用程序中使用猫鼬,这是我的配置
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}).then(()=>{
console.log(`connection to database established`)
}).catch(err=>{
console.log(`db error ${err.message}`);
process.exit(-1)
})
Run Code Online (Sandbox Code Playgroud)
但在控制台中它仍然会警告我
DeprecationWarning:不建议使用当前的“服务器发现和监视”引擎,并将在以后的版本中将其删除。要使用新的“服务器发现和监视”引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数。
有什么问题 我以前没有使用过useUnifiedTopology,但是现在它出现在控制台中,我添加了它,但它仍然给我这个错误。为什么?我什至不使用mongoClient。
编辑:
正如Felipe Plets回答的那样,猫鼬存在问题,他们在较晚版本的猫鼬中修复了该错误。因此您可以通过更新猫鼬版本来解决问题
我目前是 MongoDB 和 NodeJS 的新手,我想知道选项 useNewURLParser 和 useCreateIndex 的作用。
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api",
{
useNewUrlParser: true,
useCreateIndex: true
})
Run Code Online (Sandbox Code Playgroud)