错误:连接超时 - expressjs mongodb mongoose

sea*_*nEd 0 mongoose mongodb express

一般来说,我是表达/节点和网络编程的新手.当mongoose的mongodb连接超时时,处理此错误的最佳方法是什么,这就是我连接的方式:

mongoose.connect(config.mongoUrl);

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'error connecting with mongodb database:'));
db.once('open', function() {
  console.log('connected to mongodb database');
});
Run Code Online (Sandbox Code Playgroud)

在我的服务器运行时超时时出现错误:

与mongodb数据库连接时出错:错误:Db处的连接超时.(C:\ Users\Sean\OneDrive\webpages\000\lasttry \node_modules\mongoose\lib\drivers \node-mongodb-native\connection.js:169:17)在emitTwo(events.js:106:13)at at在emitOne上的Server.listener(C:\ Users\Sean\OneDrive\webpages\000\lasttry \node_modules\mongodb\lib\db.js:1798:14)中的Db.emit(events.js:191:7) .js:96:13)在Server的Server.emit(events.js:188:7).(C:\ Users\Sean\OneDrive\webpages\000\lasttry \node_modules\mongodb\lib\server.js:274:14)在Servers.emit的emitOne(events.js:96:13)处(events.js: 188:7)在游泳池.(C:\ Users\Sean\OneDrive\webpages\000\lasttry \node_modules\mongodb -core\lib\topologies\server.js:335:12)在Pool.emit(events.js:96:13)的pool.emit( events.js:188:7)在Connection.位于emitTwo的Connection.g(events.js:291:16)处的(C:\ Users\Sean\OneDrive\webpages\000\lasttry \node_modules\mongodb-core\lib\connection\pool.js:270:12) events.js:106:13)在Connection.emit(events.js:191:7)

mat*_*att 5

如何断开连接只需重新连接到mongo.见下文:

mongoose.connect(config.mongoUrl);

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'error connecting with mongodb database:'));

db.once('open', function() {
  console.log('connected to mongodb database');
});    

db.on('disconnected', function () {
   //Reconnect on timeout
   mongoose.connect(config.mongoUrl);
   db = mongoose.connection;
});
Run Code Online (Sandbox Code Playgroud)

您还可以在连接上设置超时值.

mongoose.connect(url, { server: { socketOptions: { connectTimeoutMS: 1000 }}}, function(err) { ... });
Run Code Online (Sandbox Code Playgroud)

此外,请确保mongo仍在您的计算机上运行.连接超时可能意味着mongo没有运行.

参考:另一个堆栈溢出问题