#javascript #mongodb
#javascript #mongodb
Вопрос:
У меня есть сервер, который сначала подключается к экземпляру MongoDB, а затем запускает веб-сервер. Если экземпляр MongoDB недоступен, нет смысла запускать веб-сервер, поэтому я думаю, что мне нужно как-то установить тайм-аут, скажем, на 5 секунд.
Как мне это сделать?
Вот мой код:
MongoClient.connect(Config.database.url).then((db) => {
console.log('Connected to MongoDB');
databaseInstance = db;
// start web server
})
Ответ №1:
- Чтобы определить тайм-аут для первоначального использования соединения
serverSelectionTimeoutMS
. - Чтобы определить тайм-аут для текущего соединения
connectTimeoutMS
Пример подключения MongoDB 3.6:
const client = new MongoClient(Config.database.url, {
connectTimeoutMS: 5000,
serverSelectionTimeoutMS: 5000
})
client.connect(err => {
console.log('Connected to MongoDB')
// ..
})
Комментарии:
1. Спасибо — это именно то, что я (и я подозреваю, что OP, несмотря на то, что другой ответ был отмечен как правильный) искал.
connectTimeoutMS
не было тайм-аута начального соединения.serverSelectionTimeoutMS
это именно то, что мы хотим.2.
serverSelectionTimeoutMS
указывает, как долго (в миллисекундах) блокировать выбор сервера перед выдачей исключения — это не только для начального соединения, как подразумевается в этом ответе
Ответ №2:
вы можете использовать «connectTimeoutMS» следующим образом
MongoClient.connect(Config.database.url, {
server: {
socketOptions: {
connectTimeoutMS: 5000
}
}
}).then((db) => {
console.log('Connected to MongoDB');
databaseInstance = db;
// start web server
})
Вот дополнительная информация об этом…
http://mongodb.github.io/node-mongodb-native/2.0/reference/connecting/connection-settings/
https://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html
Комментарии:
1. На самом деле я не думаю, что это то, чего хочет OP (несмотря на то, что они помечают это как принятое).
connectTimeoutMS
это не то, что большинство людей сочло бы таймаутом соединения. Смотрите ответ @ Ricky’s ниже.