【问题标题】:Resolve Pouch Couch DB解决袋沙发DB
【发布时间】:2014-11-28 17:00:42
【问题描述】:

我正在开发一个使用 Pouch DB 离线工作的原型网站,以便它在上线时同步备份到服务器上的 CouchDB。

Pouch DB conflicts guide 说:

要解决冲突,您只需在当前获胜者的基础上简单地 put() 一个新修订版。

你是怎么做到的?我尝试了以下功能,但都没有按预期工作:

function (current, chosen) {
    chosen._rev = current._rev;
    chosen._conflicts = [];
    db.put(chosen);
};

function (chosen) {;
    db.put(chosen);
};

顶部函数需要两个文档:

  • 当前获胜者的文档
  • 用户选择成为新获胜者的文档。

我在某些地方 (like here) 读到,删除丢失的冲突是必要的,但如果可能的话,我宁愿不删除任何内容,而且 Pouch DB 指南没有提及这一点。

【问题讨论】:

    标签: javascript couchdb pouchdb nosql


    【解决方案1】:

    你是对的;您需要删除丢失的冲突(听起来很讨厌)。我写指南时犯了一个错误;除非您删除它们,否则冲突仍然存在。

    顺便说一句,删除冲突的修订只是意味着在它们之上添加一个“墓碑”。因此,除非您明确压缩数据库,否则实际上没有任何内容被“删除”。 PouchDB 和 CouchDB 都是这种情况。

    编辑:我修复了文档。 无论如何,您能否更新指南以反映您需要删除任何不需要的冲突修订的事实?我们喜欢拉取请求,尤其是来自那些亲身处理过这类事情的人! :) 需要修改的文档是this one

    【讨论】:

    • 老实说,我正在努力让这个自己工作,也许如果我能工作,我会考虑更新指南,但老实说,我想象有人真正知道他们在说什么about 应该更新文档!
    • 我也很困惑,因为我一直在寻找与此相矛盾的 stackoverflow 答案(例如stackoverflow.com/a/24190728/310098) 是否有关于如何完成的明确指南?让我感到困惑的另一件事是,如果我用 {conflicts:true} “得到”一个失败的修订,它会将自己列为唯一的冲突。这是预期的行为吗?谢谢
    • 所以,如果我的 cmets 有误,请告诉我。 :) 至于权威指南:是的,有CouchDB one。请记住,PouchDB 将 CouchDB 实现到最小的细节,因此除非在极少数情况下,您可以只使用他们的文档。
    猜你喜欢
    • 2015-09-24
    • 2023-01-01
    • 2017-01-10
    • 2010-10-21
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2011-06-01
    • 2011-11-20
    相关资源
    最近更新 更多