2015-04-07 3 views
0

Может ли кто-нибудь показать пример того, как настройка connectTimeoutMS на другое значение дает разные результаты?MongoDb nodejs connectTimeoutMS

App начинается:

var myDB = null;   
    var options = { server: { socketOptions: { connectTimeoutMS: 5000 }}}; 
        MongoClient.connect(CONFIG.connectionString,options, function(err, db) { 
         if (err) { 
          throw err; 
         } 

         db.on('error', function(err){ 
          console.error('can not establish connection'); 
         }); 

         myDB = db; 

        }); 

Позже я остановить службу Монго (на окнах) и выполнить код, который использует

myDB.collection('someCollection').find({}).toArray(function(err){ 
    console.log('never called after stoping mongo service. Shouldnt it call with err argument?',err); 
}); 
  1. Я бы ожидать обратного вызова внутри 'ToArray' выполняется на основе свойства connectTimeoutMS. Почему его не называют?

  2. Если connectTimeoutMS предназначен для чего-то еще, как я могу видеть другой эффект, когда я устанавливаю его для разных значений.

ответ

1

Запомните разницу между connectTimeoutMS и socketTimeoutMS. От Node.js driver docs,

connectTimeoutMS = ms: Как долго соединение может открываться до истечения времени. Текущее поведение драйвера уже отличается от этого, поэтому значение по умолчанию должно быть оставлено для каждого драйвера. Для новых реализаций по умолчанию должно быть не время ожидания.

socketTimeoutMS = ms: Как долго может отправляться или получать по сокету до истечения времени ожидания. Текущее поведение драйвера уже отличается от этого, поэтому значение по умолчанию должно быть оставлено для каждого драйвера. Для новых реализаций по умолчанию должно быть не время ожидания.