2017-03-28 57 views
0

我正在使用PouchDB在設備和服務器之間同步數據庫。等待PouchDB從服務器獲取同步版本

在新設備上安裝我的應用程序時,我需要從服務器上拉下用戶的設置文檔。

var _DB = new PouchDB(localDBName); 
_DB.sync(realRemoteDB, options); 
_DB.get(userSettingsDocumentName); 

的_DB.get說文件不存在:當應用程序之前已在其他設備上運行,並創建了用戶設置一個新的設備。如果我這樣做以下。如果我等待足夠長時間,則同步工作,服務器文檔將在本地加載,並且.get可以工作。除了長時間超時之外,我該如何處理?

回答

2

PouchDB函數大多是異步的。這意味着當您獲取文檔時,同步可能尚未完成。

下面是你應該把它與承諾寫:

var _DB = new PouchDB(localDBName); 
_DB.sync(realRemoteDB, options).on('complete',function(info){ 
    //Sync is complete 
    return _DB.get(userSettingsDocumentName); 
}).then(function(doc){ 
    //Here you will have the document 

}).catch(function(err){ 
    //An error occured 
}) 
+0

謝謝亞歷克西斯。我會在幾天內嘗試。 –

+0

'完整'從未運行。如果我添加運行的「更改」,但不添加「完整」。儘管本地數據庫確實與遠程數據庫同步。 –

+0

你有什麼選擇? –