Има 2 опции за свързване, които контролират как драйверът на mongo nodejs се свързва отново след неуспешна връзка
- reconnectTries:опит за повторно свързване #times (по подразбиране 30 пъти)
- reconnectInterval:Сървърът ще изчака # милисекунди между повторните опити (по подразбиране 1000 ms)
справка за документи за драйвери на mongo
Което означава, че mongo ще продължи да се опитва да се свърже 30 пъти по подразбиране и ще чака 1 секунда преди всеки повторен опит. Ето защо започвате да виждате грешки след 30 секунди.
Трябва да настроите тези 2 параметъра въз основа на вашите нужди като тази извадка.
var MongoClient = require('mongodb').MongoClient,
f = require('util').format;
MongoClient.connect('mongodb://localhost:27017/test',
{
// retry to connect for 60 times
reconnectTries: 60,
// wait 1 second before retrying
reconnectInterval: 1000
},
function(err, db) {
var col = db.collection('t');
setInterval(function() {
col.insert({
a: 1
}, function(err, r) {
console.log("insert")
console.log(err)
col.findOne({}, function(err, doc) {
console.log("findOne")
console.log(err)
});
})
}, 1000)
});
Това ще се опита 60 пъти вместо 30 по подразбиране, което означава, че ще започнете да виждате грешки след 60 секунди, когато спре да се опитва да се свърже отново.
Странична бележка:ако искате да предотвратите чакането на приложението/заявката до изтичане на периода на повторно свързване, трябва да подадете опцията bufferMaxEntries: 0
. Цената за това е, че заявките се прекратяват и при кратки прекъсвания на мрежата.