2017-08-30 67 views
0

我正在與docker運行一個CouchDB服務器,我試圖通過Node應用程序發佈數據。ESOCKETTIMEDOUT與遠程CouchDB

但我經常提示ESOCKETTIMEDOUT錯誤(並非總是)。

這裏是我打開了連接到數據庫的方式:

var remoteDB = new PouchDB('http://localhost:5984/dsndatabase', { 
    ajax: { 
    cache: true, 
    timeout: 40000 // I tried a lot of durations 
    } 
}); 

,這裏是用來發送數據的代碼:

exports.sendDatas = function(datas,db, time) { 
    console.log('> Export vers CouchDB') 
    db.bulkDocs(datas).then(function() { 
    return db.allDocs({include_docs: true}); 
    }).then(function(){ 
    var elapsedTime = new Date().getTime() - time; 
    console.log('> Export terminé en ', elapsedTime, ' ms'); 
    }).catch(function (err) { 
    console.log(err); 
    }) 
}; 

的錯誤不會每次露面但我無法找到一個模式。

而且,超時與否,我的所有數據都已成功加載到我的CouchDB中!

我已經看到了很多關於這個問題的帖子,但沒有人真的回答我的問題...

任何想法?

回答

0

好了,這似乎是真正的問題: https://github.com/pouchdb/pouchdb/issues/3550#issuecomment-75100690

我想你可以通過說明一個合理的較大的超時值/使用指數退避重試邏輯解決它。

讓我知道,如果這對你有用。

+0

另外我很好奇你爲什麼要調用'db.allDocs({include_docs:true});'。這不是很重嗎?您可以使用複製API來發送文檔。在那裏,我讀過的內置重試機制。 – 82Tuskers

+0

我刪除了.allDocs()並將構造函數的超時選項設置爲1分鐘... 它現在似乎工作...非常感謝 – Telliouze

+0

歡迎..:)請upvote答案,如果你認爲它的幫助你出去。 – 82Tuskers