mongoose.connect()
может выглядеть следующим образом ( ссылка на документ * ):
mongoose.connect(uri, options, function(error) {
// Check error in initial connection. There is no 2nd param to the callback.
});
// Or using promises
mongoose.connect(uri, options).then(
() => { /** ready to use. The `mongoose.connect()` promise resolves to mongoose instance. */ },
err => { /** handle initial connection error */ }
);
Перед дальнейшей демонстрацией, прежде всего, ваш блок является неправильным :
if (!err) {
log('MongoDB Connection Succeeded.')
}
обработка ошибок не работает таким образом, это условие никогда не произойдет, так как при отсутствии ошибки нет причины вызывать функцию обратного вызова с ошибкой, которая проверяет это условие.
Вместо этого используйте блок .then () , так как успешное соединение возвращает Обещание:
mongoose.connect(uri, options).then(
() => { console.log('MongoDB Connection Succeeded.') },
err => { console.log(err) }
);
// OR use .catch() after .then()
mongoose.connect(uri, options).then(() => console.log('MongoDB Connection Succeeded.')).catch( err => console.log(err))
Ваш ответ: setsocketTimeoutMS
до 60000 или 90000.
Если все еще не работает, добавьте connectTimeoutMS=90000
и reconnectTries=1000
к options
.
Объявите новую переменную с именем options
(имя является произвольным, но лучше следовать соглашению), и вы также указываете useNewUrlParser: true
( ссылка ):
const options = {
useNewUrlParser: true,
socketTimeoutMS: 60000 //or 90000
}
Совет: Вы можететакже укажите параметры драйвера в строке подключения в качестве параметров в части строки запроса URI ( ссылка ):
{main-url}?socketTimeoutMS=90000
, то есть:
const uri = mongodb+srv://chanlay:chanlay123@yky-api-ajgvf.mongodb.net/yky-blog-api?retryWrites=true&w=majority?socketTimeoutMS=90000
но придерживайтесь переменной options
, так как она чище, более читабельна и проще в обслуживании (в противном случае вы поместите все в строку, что затруднит чтение и отладку).
Пожалуйста, дайте мне знать, оставив к моему ответу комментарий либо в качестве отзыва, либо сообщив о постоянной ошибке.