2017-04-14 88 views
1

我開始使用PouchDB,並使用BulkDocs函數,這用於在數據庫中插入批量數據,這裏記錄:https://pouchdb.com/guides/bulk-operations.htmlPouchDB bulkDocs只能觸發一次「更改」事件嗎?

工作得很好,但是,正如文檔本身所說,它與調用一系列鏈接的put()函數相同。

這樣做的問題是,我還使用CouchDB的功能的變化來監聽數據庫的變化和更新用戶界面,這一點:

db.changes({ 
     since: 'now', 
     live: true, 
    }).on('change', refreshCarList); 

當我打電話批量更新,這將觸發「更改」事件多次(每更新一次文檔一次),並根據批量大小,每次保存時數百次甚至數千次。這導致多次調用回調,凍結我的UI。

我的問題是:有沒有一種方法/選項/ hack使批量更新調用只改變一次?

+0

[This](http://stackoverflow.com/questions/12713564/function-in-javascript-that-c​​an-be-called-only-once)可能會有所幫助。 – Difster

+0

'bulkDocs'操作更新多個文檔。更改響應是針對單個文檔的。您會如何期待一個更改事件來處理多個更新? – Flimzy

+0

我期望這些更改不會響應單個文檔,而是響應單個查詢。 – raphadko

回答

2

您可能會考慮在調用批量操作之前關閉偵聽器,或者在構建操作完成之前設置一個標記(即偵聽器用來忽略),然後在最後調用一次。