PouchDB/CouchDB 复制时的序列计数器

PouchDB/CouchDB Sequence Counter on Replicate

我正在 live 将新创建的 pouchdb (3.3.1) 同步到已建立的 (iris) couchdb。

初始复制成功(暂停 事件触发)。

如果我在 Local 上执行 info(),我会得到 362 的 update_seq。如果我在遥控器上执行 info(),它会显示 4201.

的 update_seq

我认为这对我来说很有意义:本地数据库没有修改 - 只有叶子(即数据库中有 362 个叶子),而远程数据库序列计数器反映了自它以来所做的所有历史更改首次创建。

我的问题是:如何以编程方式确定两个数据库之间序列计数器的初始 'offset' 是什么?特别是我希望能够衡量初始复制的进度。

您无法真正比​​较两个数据库之间的序列。但是,您可以在远程数据库上执行 db.info(),获取 update_seq,然后将其与复制期间 on('change') 事件中提供给您的 last_seq 进行比较.这将告诉您您取得了多少进步。

如果您想看一个这样的例子,NPM Browser 就是这样做的,在顶部显示百分比计数器。 (它也使用 pouchdb-load,但原理是一样的,因为那里也报告了 seqs。)代码是开源的,所以请随时检查它是如何工作的。 :)

编辑: 正如评论中指出的那样,如果您使用的是 sync 而不是 replicate,则需要检查 direction参数读取last_seq时。同样对于 Cloudant,您需要在 - 上拆分字符串以获得整数序列。