我在 node 上使用Mongoose.这是我的配置:

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)
})

但在控制台上,它仍然给我一个警告:

弃用警告:当前服务器发现和监视引擎已弃用,将在future 版本中删除.要使用新的服务器发现和监视引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数.

有什么问题吗?我以前没有使用useUnifiedTopology,但现在它显示在控制台上.我把它添加到配置中,但它仍然给我这个警告,为什么?我甚至不用MongoClient.

编辑

Felipe Plets回答说mongoose 有问题,他们在以后的版本中修复了这个错误.所以你们可以通过更新mongoose 版本来解决这个问题.

推荐答案

Update

Mongoose 5.7.1已经发布,似乎已经解决了这个问题,所以设置useUnifiedTopology选项可以如期工作.

mongoose.connect(mongoConnectionString, {useNewUrlParser: true, useUnifiedTopology: true});

Original answer

我也面临同样的问题,决定深入研究mongoose 的代码: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可 Select 加入MongoDB驱动程序的副本集和分片群集监控引擎.

GitHub项目中也有一个关于这个错误的问题:https://github.com/Automattic/mongoose/issues/8156

在我的例子中,我不在副本集或分片集群中使用Mongoose,尽管选项应该为false.但如果为false,它会抱怨设置应该为true.一旦是真的,它仍然不起作用,可能是因为我的数据库没有在副本集或分片集群上运行.

我已经降级到5.6.13,我的项目恢复正常.因此,我现在看到的唯一 Select 是降级,等待修复程序更新为新版本.

Node.js相关问答推荐

编辑Mongoose中的对象嵌套数组

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

使用ReadableStream.管道时NodeJS Crypto Hash不正确

车把模板引擎循环问题

Node js 处理回调和 Promise

几个 lambda 共有的函数

表达 js 错误处理程序在第一个之后被忽略

module.exports=require('other') 和临时变量有什么区别?

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

kubernetes 上的 nextjs 无法启动

npm chokidar 触发事件两次

Google Calendar API FreeBusy 外部用户

带权限的机密 Rest-Api - 总是 403 - 我做错了什么?

如何防止 node.js 中的内存泄漏?

如何将使用 Gulp 的 node 部署到 heroku

对不同对象中的函数使用相同的键时,V8 中的函数调用缓慢

用一级 try ... catch 捕获 JavaScript Promise 中的错误

nodejs v10.3.0 的 gulp 任务问题:src\node_contextify.cc:629: Assertion `args[1]->IsString()' failed

名称类型为 mongoose 的字段

安装 node 包时可以使用自定义目录名称而不是node_modules吗?