PouchDB/CouchDB Sequence Counter on Replicate

南楼画角 提交于 2020-01-11 03:09:03

问题


I am live syncing a freshly minted pouchdb (3.3.1) to an established (iris) couchdb.

The initial replication happens successfully (pause event fired).

If I do info() on the Local, I get an update_seq of 362. If I do info() on the remote, it shows an update_seq of 4201.

I think this makes sense to me: the local db has no revisions - only the leaves (i.e. there are 362 leaves in the db) whereas the remote db sequence counter reflects all the historical changes that have been made since it was first created.

My question is: how can I programatically determine what the initial 'offset' in sequence counter is between the two databases? In particular I want to be able to measure the progress of the initial replication.


回答1:


You can't really compare the seqs across two databases. However, you can do a db.info() on the remote database, grab the update_seq, and then compare that to the last_seq that is given to you in the on('change') event during replication. This will tell you how much progress you've made.

If you would like to see an example of this, the NPM Browser does exactly this, to show the percent counter at the top. (It uses pouchdb-load as well, but the principle is the same, since the seqs are reported there as well.) The code is open-source, so feel free to check out how it works. :)

Edit: as pointed out in a comment, if you are using sync rather than replicate, you need to check the direction parameter when reading last_seq. Also for Cloudant, you will need to split the string on - to get the integer seq.



来源:https://stackoverflow.com/questions/29138091/pouchdb-couchdb-sequence-counter-on-replicate

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!