我正在开发一个进度条,以显示远程CouchDB数据库和本地浏览器托管的PouchDB数据库之间的复制进度。
目前,我使用每个数据库中的文档数来确定进度的百分比。但是,如果在任一数据库中替换了大量记录,则此百分比进度不准确。
我想使用其他一些值来显示复制进度。复制完成后,我可以依靠完成复制的两个数据库的序列号相同吗?
答案 0 :(得分:2)
您可以在案例中使用active tasks端点。除了其他事项,它还包括任务的进度百分比。例如,复制任务将如下所示
{
"checkpointed_source_seq": 68585,
"continuous": false,
"doc_id": null,
"doc_write_failures": 0,
"docs_read": 4524,
"docs_written": 4524,
"missing_revisions_found": 4524,
"pid": "<0.1538.5>",
"progress": 44**,
"replication_id": "9bc1727d74d49d9e157e260bb8bbd1d5",
"revisions_checked": 4524,
"source": "mailbox",
"source_seq": 154419,
"started_on": 1376116644,
"target": "http://mailsrv:5984/mailbox",
"type": "replication",
"updated_on": 1376116651
}
更新序列号特定于数据库。假设您在数据库中有9个文档,并且update_seq为17. update_seq表示数据库已更新17次,即使文档数为9.现在,如果将其复制到新数据库为空,则update_seq新数据库的数量为9,因为它只更新了9次。由于新数据库为空,因此仅创建了9个新文档。
如果它包含一些文件,那么更新号码将根据其_rev的不同而不同。因此,不能依赖update_seq来计算复制操作的进度。
答案 1 :(得分:1)
我经常使用的一个技巧是使用last_seq
/ update_seq
作为进度指示器。例如。看我的回答here。