2017-02-11 3 views
0

Я новичок в том, что вы можете выразить/узел и веб-программирование в целом. Что такое лучший способ справиться с этой ошибкой, когда время подключения MongoDB Mongoose находится вне, это то, как я подключаю:Ошибка: время ожидания соединения - expressjs mongodb mongoose

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'); 
}); 

Это ошибка, когда он раз в то время мой сервер: подключение

ошибка с базой данных 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) на Db.emit (events.js: 191: 7) на сервере Server.listener (C: \ Users \ Sean \ OneDrive \ webpages \ 000 \ lasttry \ node_modules \ mongodb \ lib \ db.js: 1798: 14) на emitOne (events.js: 96: 13) на сервере Server.emit (events.js: 188: 7) на сервере. (C: \ Users \ Sean \ OneDrive \ webpages \ 000 \ lasttry \ node_modules \ mongodb \ lib \ server.js: 274: 14) at emitOne (events.js: 96: 13) на сервере Server.emit (события. js: 188: 7) у бассейна. (C: \ Users \ Sean \ OneDrive \ webpages \ 000 \ lasttry \ node_modules \ mongodb-core \ lib \ topologies \ server.js: 335: 12) at emitOne (events.js: 96: 13) at Pool. emit (events.js: 188: 7) при подключении. (C: \ Users \ Sean \ OneDrive \ webpages \ 000 \ lasttry \ node_modules \ mongodb-core \ lib \ connection \ pool.js: 270: 12) в Connection.g (events.js: 291: 16) at emitTwo (events.js: 106: 13) at Connection.emit (events.js: 191: 7)

+0

Когда происходит тайм-аут? У меня только когда-либо был тайм-аут мангуста, если процесс узла перепутался с моим компьютером, и он заснул. – matt

+0

Я использую mLab, его облачный сервис mongodb. Кажется, тайм-аут случайным образом. Я только когда-либо видел, как это случалось дважды, но если я пойду на производство, и это произойдет, это будет кошмар. – seanEd

+0

(См. Документы.) [Http://docs.mlab.com/timeouts/#connection-timeout] Вам нужно установить значение тайм-аута соединения, как в ответе, который я опубликовал. В противном случае, если есть какие-либо проблемы с подключением, он не будет ждать до истечения времени. – matt

ответ

4

Как насчет отсоединения, просто подключитесь к монго. См. Ниже:

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; 
}); 

Вы также можете установить значение таймаута для соединения.

mongoose.connect(url, { server: { socketOptions: { connectTimeoutMS: 1000 }}}, function(err) { ... }); 

Кроме того, убедитесь, что монго все еще работает на вашем компьютере. Тайм-аут соединения может означать, что mongo не работает.

Ссылка: Another stack overflow question

0
  1. Проверить mongod работает.

    печатать mongo в оболочке.

  2. Добавить connectTimeoutMS=300000 параметр для вас uri.

    URI выглядит mongodb://localhost/collectionName?connectTimeoutMS=300000

Смежные вопросы