iLi*_*LiA 28 mongoose mongodb node.js
我在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回答的那样,猫鼬存在问题,他们在较晚版本的猫鼬中修复了该错误。因此您可以通过更新猫鼬版本来解决问题
Fel*_*ets 30
更新资料
Mongoose 5.7.1已发布,似乎已解决了该问题,因此useUnifiedTopology
按预期设置选项工作。
mongoose.connect(mongoConnectionString, {useUnifiedTopology: true});
Run Code Online (Sandbox Code Playgroud)
原始答案
我遇到了同样的问题,并决定深入研究猫鼬代码:https : //github.com/Automattic/mongoose/search? q = useUnifiedTopology & unscoped_q = useUnifiedTopology
似乎是在Mongoose 5.7版本上添加的一个选项,并且尚未有充分的文档记录。我什至找不到它在库历史记录中提到的https://github.com/Automattic/mongoose/blob/master/History.md
根据代码中的注释:
- @param {Boolean} [options.useUnifiedTopology = false]默认情况下为False。设置为
true
选择加入MongoDB驱动程序的副本集和分片群集监视引擎。
关于此错误,项目GitHub上也存在一个问题:https : //github.com/Automattic/mongoose/issues/8156
就我而言,尽管选项应该为false,但我不会在副本集或分片群集中使用Mongoose。但是如果为假,它会抱怨设置应该为真。一旦为真,它仍然不起作用,可能是因为我的数据库未在副本集或分片群集上运行。
我已降级为5.6.13,我的项目恢复正常。因此,我目前看到的唯一选择是将其降级,并等待更新更新。
tam*_*n s 16
在mongoDB中,他们不赞成使用当前的服务器和引擎监视包,因此您需要使用新的服务器和引擎监视包。所以你只用
{useUnifiedTopology:true}
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
Run Code Online (Sandbox Code Playgroud)
*_*лов 16
这解决了我的问题。
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url, {useUnifiedTopology: true});
Run Code Online (Sandbox Code Playgroud)
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
Run Code Online (Sandbox Code Playgroud)
将删除以下错误:-
(node:7481) DeprecationWarning: 当前 URL 字符串解析器已被弃用,并将在未来版本中删除。要使用新的解析器,请将选项 { useNewUrlParser: true } 传递给 MongoClient.connect。
(node:7481) 弃用警告:当前的服务器发现和监控引擎已弃用,并将在未来版本中删除。要使用新的服务器发现和监控引擎,请将选项 { useUnifiedTopology: true } 传递给 MongoClient 构造函数。
归档时间: |
|
查看次数: |
19317 次 |
最近记录: |