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,您需要在 -
上拆分字符串以获得整数序列。
我正在 live 将新创建的 pouchdb (3.3.1) 同步到已建立的 (iris) couchdb。
初始复制成功(暂停 事件触发)。
如果我在 Local 上执行 info()
,我会得到 362 的 update_seq。如果我在遥控器上执行 info()
,它会显示 4201.
我认为这对我来说很有意义:本地数据库没有修改 - 只有叶子(即数据库中有 362 个叶子),而远程数据库序列计数器反映了自它以来所做的所有历史更改首次创建。
我的问题是:如何以编程方式确定两个数据库之间序列计数器的初始 'offset' 是什么?特别是我希望能够衡量初始复制的进度。
您无法真正比较两个数据库之间的序列。但是,您可以在远程数据库上执行 db.info()
,获取 update_seq
,然后将其与复制期间 on('change')
事件中提供给您的 last_seq
进行比较.这将告诉您您取得了多少进步。
如果您想看一个这样的例子,NPM Browser 就是这样做的,在顶部显示百分比计数器。 (它也使用 pouchdb-load,但原理是一样的,因为那里也报告了 seqs。)代码是开源的,所以请随时检查它是如何工作的。 :)
编辑: 正如评论中指出的那样,如果您使用的是 sync
而不是 replicate
,则需要检查 direction
参数读取last_seq
时。同样对于 Cloudant,您需要在 -
上拆分字符串以获得整数序列。