要使用新的解析器,请在MongoClient.connect中传递选项{useNewUrlParser:true}。

6
当我运行一个简单的NodeJS项目,使用MongoDB上传数据到数据库时,我会遇到以下错误:
(node:3556)DeprecationWarning:当前URL字符串解析器已过时,并将在将来的版本中被删除。要使用新的解析器,请在MongoClient.connect中传递选项{useNewUrlParser:true}。
为什么会出现这个错误?我该如何修复它?

1
欢迎来到 Stack Overflow。请分享一些代码,以便我们能够最好地帮助您。在帮助中心有关于如何提出好问题的信息:https://stackoverflow.com/help/how-to-ask - Chris
2个回答

26

如果你正在使用Mongo进行连接,请尝试使用以下方法:

MongoClient.connect('mongodb://user:password@domain.com:port/dbname', { useNewUrlParser: true });

如果您正在使用mongoose,请使用以下内容:

mongoose.connect('mongodb://user:password@domain.com:27017/dbname', { useNewUrlParser: true });

你也可以使用类似这样的方法:

const config = {
  autoIndex: false,
  useNewUrlParser: true,
};
return mongoose.connect(uri, config);

根据lineus的解释:

https://github.com/Automattic/mongoose/issues/6667


我发现我还需要将"useUnifiedTopology: true"添加到配置对象中,以使我的工作正常。 - Jason Spence

1
将这段代码放入您的布局文件中。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/yourDatabase', { useNewUrlParser: true });
var Schema = mongoose.Schema;

然后,您可以创建您的模式布局,例如:
var mySchema = new Schema({
    first_name: String, 
    last_name: String
});

你不觉得把mongoose连接放在app.js和其他配置一起会更好吗?嗯,只是随便想想。 - Nate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接