在我的Android应用程序中,我使用sync_gateway设置拉复制。
由于特定应用程序的逻辑,每当检测到冲突时,我都需要保留从服务器复制的文档修订版。
我能够定义哪个冲突版本来自复制(服务器),哪个版本来自本地修改(移动应用程序)。
如果我使用复制修订版中的数据(suggested approach)创建逻辑删除和新版本,我将会出现连续冲突,因为本地版本ID将始终与服务器上的版本不同(任何用于选举currentRevision的新版本都会有不同的ID。
我最好的解决方案是将服务器版本保留为当前版本并丢弃任何其他版本。
我该怎么做?
是否可以清除修订版?或者是否可以创建一个仅包含服务器修订的对象,以便在冲突解决后,任何其他没有冲突的拉动只会更新我的文档?我需要一种类似于覆盖的行为。
答案 0 :(得分:1)
这取决于解决冲突的结果应该是什么:
合并文档属性:在这种情况下,您需要创建一个新修订,其属性来自每个冲突的修订版,然后删除所有修订版。
清理相互冲突的修订版:在这种情况下,您可以删除除要保留的修订版之外的所有修订版。您可能希望保留的修订版本不是当前版本,但删除所有其他修订版本将使其成为当前版本。
请参阅TodoLite-Android冲突解决示例(https://github.com/couchbaselabs/ToDoLite-Android/blob/bcd87faa4c68a7cee075468b08da55c8041830a7/ToDoLite/src/main/java/com/couchbase/todolite/ListConflicts.java#L51-L81)。
答案 1 :(得分:1)
我解决了这个问题,但问题是我在混淆。
所以这是我学到的,感谢对my post here的回复: