put
またはbulkDocs
をcouchdb/pouchdbにコピーして、複製の場合と同じ動作、つまりの回答を409
の代わりに受け取ることはできますか?の代わりに_conflictsを作成または更新する
基本的に私は次のコードでケースを避けたい:
const docs = Object
.keys(pendingSet)
.map(id => toDoc(deepClone(pendingSet[id]), { id, rev: this.revCache.get(id) }))
const results = await this.db.bulkDocs(docs)
const conflicts = []
for (let n = 0; n < results.length; ++n) {
const result = results[n]
if (result.error === 'conflict') {
// TODO: This needs review...
const doc = await this.db.get(docs[n]._id)
const rev = `${doc._rev.split('-')[0]}-${this.serverName}`
conflicts.push({
...docs[n],
_rev: rev
})
this.revCache.set(doc._id, rev)
} else if (result.error) {
callback(result.error)
} else {
this.revCache.set(result.id, result.rev)
}
}
await this.db.bulkDocs(conflicts, { new_edits: false })
私はpouchdbからヒントのビットを得ているが、私はまだそれを適用する方法がわかりませんよ。
EDIT1:最新のコードで更新されました。
ありがとうございます!それが正しい方向に私を助けました。しかし、質問。新しい "myrevtoken"はどのように生成されますか?それはアプリケーションのための一定のUUIDですか? – ronag
通常、リビジョントークンは、ドキュメントのコンテンツのハッシュです。しかしそれはあなた次第です。 –