【问题标题】:How to set Auto Reconnect with Unified Topology如何使用统一拓扑设置自动重新连接
【发布时间】:2020-04-15 08:36:14
【问题描述】:

设置useUnifiedTopology=true后,自动重新连接停止工作并产生以下错误:

DeprecationWarning: The option `reconnectInterval` is incompatible with the unified topology
DeprecationWarning: The option `reconnectTries` is incompatible with the unified topology
DeprecationWarning: The option `autoReconnect` is incompatible with the unified topology

如何让服务器自动重新连接该新标志?

我正在使用mongoose.createConnection 连接以下选项:

{
        autoReconnect: true,
        keepAliveInitialDelay: 300000,
        connectTimeoutMS: 300000,
        reconnectTries: Number.MAX_VALUE,
        reconnectInterval: 1000,
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
        poolSize: 10,
        auth: {
            authSource: "admin"
        },
        user: process.env.MONGO_USER,
        pass: process.env.MONGO_PASS
    }

【问题讨论】:

    标签: node.js mongoose node-mongodb-native


    【解决方案1】:

    根据文档,您通常不应将 autoReconnectuseUnifiedTopology 结合使用 来源:https://mongoosejs.com/docs/connections.html#options

    autoReconnect - 底层 MongoDB 驱动程序在失去与 MongoDB 的连接时会自动尝试重新连接。除非您是想要管理自己的连接池的高级用户,否则不要将此选项设置为 false。

    【讨论】:

    • 我没有使用 mongoose 但原始 mongodb 模块有问题,它不允许我使用 autoReconnect=true: (node:4642) DeprecationWarning: 选项 autoReconnect 与统一拓扑,请访问http://...(node:4642) 弃用警告:选项reconnectTries与统一拓扑不兼容,请访问http://...
    • Mongoose 在下面使用 mongodb nodejs 驱动。所以同样的原则也适用:)
    • 是的,但是新的统一拓扑不允许旧选项“autoReconnect”和“reconnectTries”
    • 这正是我的观点 :) 您不应该根据文档设置这些属性。您应该实施自己的重新连接尝试。请参阅此库以获取示例:github.com/nestjs/mongoose/blob/master/lib/…
    • 这是脑残。所以现在成千上万的人将重新实现自己的重新连接逻辑并创建许多自定义的错误重新连接逻辑......
    猜你喜欢
    • 2020-04-16
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2019-10-23
    • 2021-09-28
    • 2020-04-26
    相关资源
    最近更新 更多