【问题标题】:MongoDB Atlas connection keeps droppingMongoDB Atlas 连接不断下降
【发布时间】:2020-07-07 13:21:41
【问题描述】:

我已将 MongoDB atlas 集成到我的 nodejs 应用程序中,但连接每隔几个小时就会断开一次,这会迫使应用程序重新启动。是否有办法处理代码中的重新连接以避免重新启动应用程序?

{ MongoNetworkError: 连接 2 到 67.156.445.93:27017 已关闭 在(匿名函数).forEach.op (/home/ubuntu/app/node_modules/mongodb/lib/cmap/connection.js:63:15) 在 Map.forEach () 在 TLSSocket.Connection.stream.on (/home/ubuntu/app/node_modules/mongodb/lib/cmap/connection.js:62:20) 在 TLSSocket.emit (events.js:203:15) 在 _handle.close (net.js:607:12) 在 TCP.done (_tls_wrap.js:388:7) 名称:'MongoNetworkError', [Symbol(mongoErrorContextSymbol)]: { isGetMore: true } }

代码:

const log = console.log;
const mongoose = require('mongoose');
const link = ' URL of MONGOATLAS DB';

const connectDB = async () => {
  mongoose.connect(link, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  });

  mongoose.connection.on('connected',() => {
      log(`MongoDB connection successful!`);
  });

  mongoose.connection.on('error',(err) => {
      log(`MongoDB connection error => ${err}!`);
  });

  mongoose.connection.on('disconnected', () => {
      log(`MongoDB connection diconnected`);
  });

}

module.exports = connectDB;

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    有一个名为 database.js 的文件。在里面放上这段代码:

    const mongoose = require("mongoose");
    
    const db = "mongodb://localhost:27017/yourDbName" //Or use atlas url.
    
    const connectDB = async () => {
      try {
        await mongoose.connect(db, {
          useNewUrlParser: true,
          useUnifiedTopology: true,
          useCreateIndex: true,
          useFindAndModify: false
        });
        console.log("Mongo db Connected !");
      } catch (err) {
        console.log(err.message);
        //exit process with failure
        process.exit(1);
      }
    };
    
    module.exports = connectDB;

    在你的 server.js 或 index.js 中:

    const connectDB = require("./database.js");

    【讨论】:

    • 谢谢,我会试试看它是否有效。旁注 - 根据文档,如果我们使用“useUnifiedTopology”选项,那么应用程序应该会自动重新连接。我已经在使用这个选项,所以不知道为什么需要显式处理断开连接事件以重新连接。
    猜你喜欢
    • 2020-08-16
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2019-08-11
    • 2019-12-10
    • 2017-11-11
    相关资源
    最近更新 更多