Couchdb 是否有可能获得数据库的最新序号?

Couchdb 是否有可能获得数据库的最新序号?,couchdb,pouchdb,Couchdb,Pouchdb,我试图涵盖CouchDB被回滚的问题,这将导致未来出现pockdb。我想找到一种方法来检测这种情况,并在这种情况发生时强制PockDB销毁和重新加载 有没有办法询问PockDB当前的pull seq编号?我找不到任何关于这方面的文件。我的google foo不够强大 到目前为止,我唯一的想法是观看sync.on(change)提要,并在每次拉动时记录序号。然后在应用程序重新加载时,以ajaxhttps:/server/db/_changes?descending=true&limit=1的形式运

我试图涵盖CouchDB被回滚的问题,这将导致未来出现pockdb。我想找到一种方法来检测这种情况,并在这种情况发生时强制PockDB销毁和重新加载

有没有办法询问PockDB当前的pull seq编号?我找不到任何关于这方面的文件。我的google foo不够强大

到目前为止,我唯一的想法是观看sync.on(change)提要,并在每次拉动时记录序号。然后在应用程序重新加载时,以ajax
https:/server/db/_changes?descending=true&limit=1
的形式运行此命令,并验证返回的序号是否高于我存储的序号。如果存储的seq更高,则从indexdb清除pockdb.destroy(),清除
\u pocky\u
,并可能找到如何删除此版本的websql版本


或者有没有更好的方法来解决PockDB在未来比CouchDB提前结束的情况?

问题似乎出在复制检查点文档中。当您从备份中恢复数据库时,您可能也在恢复检查点本地文档

您应该删除所有本地文档,方法是使用_local_docs端点查找它们,然后从恢复的数据库中删除它们


这样,您的PouchDB应该尝试向CouchDB发送同步回PouchDB和CouchDB的文档。

请您再解释一下在CouchBD中回滚的想法好吗?确切的情况是什么?每次复制后,即使在发生灾难性硬件故障和从备份中恢复的CouchDb中有更高的序列,PockDB也会同步最后一个序列。或者在我们的测试环境中,将灾难性的测试数据回滚到live的副本中,以便再次进行测试。我发现,在CouchDb seq赶上paughdb的期望值之前,paughdb将停止同步。当然,CouchDb刷新以清除墓碑。更清楚的是,假设我的个人资料是第170版,然后CouchDb回滚,我的个人资料是第120版。PockDB看不到这个变化,它加载自己的170副本,不推送它,当下一个变化是121版本时,get真的很困惑。@Juanjordriguez,如果PockDB不关心序号的话。理论上,我是否可以通过简单地使用脚本来运行所有相关文档,然后将它们重新放回新的修订版,从而进行更改并触发PockDB以获取最新的更改来解决此回滚问题?在这种情况下,您可能会遇到文档冲突。您的复制是拉、推还是两者都有?很有趣,所以运行此
https://server/db/_local_docs
,在“行”中循环以获取
id“\u local/iy183t4BF\u SQwHOezT1KmA==”
并使用该id发送删除?虽然我不一定希望PockDB回滚更改,但也可以回滚它自己。是的,当PockDB尝试查找检查点但检查点不存在时,复制会从一开始就开始,这会导致PockDB回滚吗?在我的示例中,是否重新检索旧的配置文件?如果检查点存储在数据库中,那么它们也应该被回滚,或者实际上被删除,我不明白为什么它不会意外地这样做。既然PockDB停止的检查点不再存在,它不应该回滚吗?或者说,PockDB需要在行动之前清除所有检查点吗?还有,它需要什么东西来触发它行动吗?该文档有325923行!那会导致数据库回滚吗?不,可能,PockDB中的文档将被发送到CouchDB。嗯,那么是的,在这种情况下,我也需要PockDB回滚。或者至少能够检测到问题并摧毁它自己。