node.js - 通过将 useNewUrlParser 设置为 true 来避免 "current URL string parser is deprecated"警告

标签 node.js mongodb typescript express mongoose

我有一个数据库包装类,它与某个 MongoDB 实例建立连接:

async connect(connectionString: string): Promise<void> {
        this.client = await MongoClient.connect(connectionString)
        this.db = this.client.db()
}

这给了我一个警告:

(node:4833) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

connect() 方法接受 MongoClientOptions 实例作为第二个参数。但它没有名为 useNewUrlParser 的属性。我还尝试在连接字符串中设置这些属性,如下所示: mongodb://127.0.0.1/my-db?useNewUrlParser=true 但它对这些警告没有影响。

那么我该如何设置 useNewUrlParser 来移除这些警告呢?这对我很重要,因为脚本应该作为 cron 运行,并且这些警告会导致垃圾邮件垃圾邮件。

我在 3.1.0-beta4 版本中使用 mongodb 驱动程序,并在 3.0 中使用相应的 @types/mongodb 包。 18。它们都是使用 npm install 的最新版本。

解决方法

使用旧版本的 mongodb 驱动:

"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"

最佳答案

检查您的 mongo 版本:

mongo --version

如果您使用版本 >= 3.1.0,请将您的 mongo 连接文件更改为 ->

MongoClient.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true })

或你的 Mongoose 连接文件 ->

mongoose.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true });

理想情况下,它是第 4 版功能,但 v3.1.0 及更高版本也支持它。查看 MongoDB GitHub了解详情。

关于node.js - 通过将 useNewUrlParser 设置为 true 来避免 "current URL string parser is deprecated"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448272/

相关文章:

node.js - 使用 Redis 和 MongoDB (HyperLogLog) 计算唯一值

mongodb - 以数组为参数查询,如何转换为 GoLang mgo?

typescript - 创建嵌套映射类型

typescript - 如何指定函数在 TypeScript 中新建时返回特定类型?

reactjs - 类型 'undefined' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法

在 Node 应用程序中未定义 process.env

mysql - 仅使用 AWS Cognito + mysql

javascript - 如何从状态数组创建下拉列表?

javascript - 在 Node.js 中从文件末尾读取确定大小的字符串

mongodb - 无法在 mongodb 中创建索引, "key too large to index"