繁体   English   中英

如果使用mongoose在node.js中的mongo连接失败,如何自动重新连接?

[英]How to auto reconnect if mongo connection fails in node.js using mongoose?

我已经在mongodb中启动并在docker容器中运行。 我停止容器,节点返回MongoError。 我重新启动容器,并且节点继续抛出相同的MongoError。

出现问题时,我希望它重新连接。

    const uri: string = this.config.db.uri;
    const options = {
            useNewUrlParser: true,
            useCreateIndex: true,
            autoIndex: true,
            autoReconnect: true,
    },

    mongoose.connect(uri, options).then(
        () => {
            this.log.info("MongoDB Successfully Connected On: " + this.config.db.uri);
        },
        (err: any) => {
            this.log.error("MongoDB Error:", err);
            this.log.info("%s MongoDB connection error. Please make sure MongoDB is running.");
            throw err;
        },

    );

当mongodb连接失败时,如何设置mongoose尝试自动连接。

我找到了答案,而不是像其他人建议的那样检查错误事件并重新连接。 您可以设置一些选项来处理自动重新连接。

这是我现在正在使用的猫鼬选项集。

const options = {
            useNewUrlParser: true,
            useCreateIndex: true,
            autoIndex: true,
            reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
            reconnectInterval: 500, // Reconnect every 500ms
            bufferMaxEntries: 0,
            connectTimeoutMS: 10000, // Give up initial connection after 10 seconds
            socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
        }

您可以通过在容器中启动和停止mongodb并检查您的节点应用程序来测试它的工作原理。

有关更多信息,请参阅文档的此部分。 https://mongoosejs.com/docs/connections.html#options

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM