当前位置: 首页 > 面试题库 >

服务器发现和监视引擎已弃用

孔礼骞
2023-03-14
问题内容

我在我的Node.js应用程序中使用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)
})

但是在控制台中,它仍然会警告我:

DeprecationWarning:不建议使用当前的“服务器发现和监视”引擎,并将在以后的版本中将其删除。要使用新的“服务器发现和监视”引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数。

问题是什么?我以前没有使用useUnifiedTopology过,但是现在它显示在控制台中。我将其添加到配置中,但它仍会给我这个警告,为什么?我什至不使用MongoClient

编辑

Felipe Plets回答时,猫鼬存在问题,他们在更高版本中修复了该错误。因此,您可以通过更新猫鼬版本来解决问题。


问题答案:

更新资料

Mongoose 5.7.1已发布,似乎可以解决该问题,因此useUnifiedTopology可以按预期设置选件。

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

原始答案

我遇到了同样的问题,并决定深入研究猫鼬代码: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,并且我的项目恢复正常。因此,我目前唯一看到的选择是将其降级,然后等待更新更新。



 类似资料:
  • 在GAE建立一个网站。我在dev服务器上做了大部分工作,在那里我有一个数据库。在我的开发服务器中,我在UTF-8中插入了实体,因为如果我不这样做,值就不会被写入。然而,这让我不得不使用,以便用jinja2正确显示它们。我知道GAE数据存储只使用UNICODE,所以我可以预见我现在面临的问题。 所以,我使用了来获取我的dev数据存储的备份。 现在的问题是当我尝试更新到服务器。 要么我用: appcf

  • 注意 许多监视器特性只在Neo4j服务器高级版和企业版才可以使用。 为了能获取Neo4j数据库的健康状况,可以采用不同级别的监控等级。这些功能一般都是通过 JMX呈现出来。 25.1. 调整远程JMX访问Neo4j的服务器 默认情况下,Neo4j高级版和企业版都不允许远程的JMX连接,因为在 conf/neo4j-wrapper.conf配置文件中的相关配置是被注释掉了的。为了启用该功能, 你必须

  • 希望大家都知道这个类,用于在firebase通知令牌刷新时获取通知令牌。我们从这个类中获取刷新的令牌,方法如下。

  • 在Google PubSub的Node.js客户机中,是否可以监视批量发布者队列的大小并按需刷新它? 我正在开发一个Node/Express服务,它使用PubSub批处理发布器将应用程序事件推送到PubSub主题中。我想在批处理发布服务器的队列大小上设置一些指标和警报。此外,当此服务的实例接收到SIGTERM信号时,我希望运行一个关闭过程,以确保消息不会丢失。理想情况下,当发生这种情况时,我希望刷

  • 问题内容: 我无法解决一项服务,而另一项正在解决?如果那是错误的意思,那么等待解决问题的方法是什么? java.lang.IllegalArgumentException:侦听器已在android.net.nsd.NsdManager.resolveService(NsdManager.java:613)处使用,位于com.example.miguel.broadcast.LocalService

  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot