【问题标题】:PouchDB/CouchDB Sequence Counter on Replicate复制时的 PouchDB/CouchDB 序列计数器
【发布时间】:2017-04-08 07:21:28
【问题描述】:

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

初始复制成功发生(pause 事件触发)。

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

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

我的问题是:如何以编程方式确定两个数据库之间序列计数器中的初始“偏移量”是多少?特别是我希望能够衡量初始复制的进度。

【问题讨论】:

    标签: couchdb pouchdb


    【解决方案1】:

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

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

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

    【讨论】:

    • 对于将来可能会发现这很有用的任何其他人:如果您使用的是sync而不是replicate,您还需要在阅读时检查 direction 参数last_seq
    • 另外,如果您使用的是 cloudant 而不是 iriscouch,请注意 update_seqlast_seq 不是简单的数字(它们包含完整的修订字符串)
    • simonberry:这是一个有趣的观点。那么这是否意味着,对于 Cloudant/CouchDB 2.0,不可能提供“完成百分比”视图?
    • 不...您只需执行Number(info.change.last_seq.substring(0,info.change.last_seq.indexOf('-'))) 即可将序列转换为您可以使用的数字...。
    • 啊,好吧,我的错!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2013-06-07
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2017-04-16
    相关资源
    最近更新 更多