Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
B/CouchDb冲突问题_Couchdb_Pouchdb - Fatal编程技术网

B/CouchDb冲突问题

B/CouchDb冲突问题,couchdb,pouchdb,Couchdb,Pouchdb,我正在使用带有CouchDb后端的PockDB,在网站启动时的客户端上,我正在插入一个与服务器中的文档具有相同“id”的文档(在数据库同步之前) 这很好,因为它是同一个文档,但由于PockDB文档是_rev:1,couchDb文档可能是_rev:2,当我的PockDB进行同步时,我再次尝试获取文档时,我会遇到冲突 因此,我在客户机上有: {{u id:'mydoc',u rev:'1-xxxxxxxxx'}和 {{u id:'mydoc',u rev:'2-xxxxxxxxx'} 但是正确的版本

我正在使用带有CouchDb后端的PockDB,在网站启动时的客户端上,我正在插入一个与服务器中的文档具有相同“id”的文档(在数据库同步之前)

这很好,因为它是同一个文档,但由于PockDB文档是_rev:1,couchDb文档可能是_rev:2,当我的PockDB进行同步时,我再次尝试获取文档时,我会遇到冲突

因此,我在客户机上有:

{{u id:'mydoc',u rev:'1-xxxxxxxxx'}和 {{u id:'mydoc',u rev:'2-xxxxxxxxx'}

但是正确的版本实际上是_rev:1(因为这是客户机第一次创建的版本)

如何在客户端上正确修复此问题,使其修复冲突?

您有两种选择:

首先,创建具有不同ID的文档。这取决于应用程序;也许这是不可能的,或者不适合你的情况

其次,您需要代码来删除文档的“错误”版本。(您可以在客户端或服务器上执行此操作。在这两种情况下,更新都将复制到另一个系统。)

例如,如果您的客户端应用程序知道版本1是正确的,那么当您看到有冲突的版本时,请删除除正确版本之外的所有版本。这些删除操作将复制到CouchDB,很快您将只有一个正确的版本。

所以我使用这个插件“”,但在设置_rev:2和_deleted:true并保持_rev:1不变时,上面的数据会在db.bulkDocs上出错。我曾考虑过使用bulkDocs的“new_edits:false”来强制执行put,但我认为这可能是个坏主意。