私はCouchDBとPouchDBの両方が新しく、モバイルデバイスとデスクトップデバイス間で同期し、オフラインで使用できる連絡先管理システムを作成するために使用しています。 PHP/MySQLのバックエンドを書く必要があるよりも、PouchDBの使用が無限に簡単であることがわかりました。連続レプリケーションとの競合を解決する方法
私はそれをうまく使いました。オフラインデバイスで矛盾する変更を加えると、CouchDBはアルゴリズムを使用して勝者を任意に選んですべてのデバイスに正しくプッシュします。
私がしたいのは、競合するレコードをマージするカスタムアルゴリズムを実装することです。
- レコードは1つのクライアント上で削除され、単に別に更新されている場合は、 更新されたバージョンの勝利を、両方のクライアントが削除に同意しない:ここで私が使用したいアルゴリズムがあります。
- 最新の「変更済み」タイムスタンプのレコードは マスターになり、古いレコードは2次レコードになります。
- セカンダリにのみ存在するフィールド(または マスターに空のフィールド)はすべてマスターに移動されます。
- マスターリビジョンが保存され、セカンダリが削除されます。
CouchDBのガイドには良いexplanationがありますが、連続レプリケーション中にPouchDB APIを使用して実装する方法がわかりません。 PouchDB APIによると、レプリケート・オプションには "onChange"リスナーがありますが、それを使用して競合を傍受する方法はわかりません。
サンプルコードを含む簡単なチュートリアルを書く人がいれば、自分自身と私は確信しています。紛争解決を管理する正確にどのようにの例で記事を書く
ありがとうございました!これは大いに役立ちます。 –