Couchdb 地方冲突

Couchdb 地方冲突,couchdb,pouchdb,Couchdb,Pouchdb,有时,我会得到一些大致如下的信息: 409(冲突) 标题响应为:{“error”:“conflict”,“reason”:“Document update conflict.”} 请求有效负载为: { "_id": "_local/f.kaEuoL4i41KgUTkCHAyg==", "_rev": "0-10", "session_id": "735AF8E9-BF62-191F-9A63-760C922E1259", "history": [{

有时,我会得到一些大致如下的信息:

409(冲突)

标题响应为:
{“error”:“conflict”,“reason”:“Document update conflict.”}

请求有效负载为:

{
    "_id": "_local/f.kaEuoL4i41KgUTkCHAyg==",
    "_rev": "0-10",
    "session_id": "735AF8E9-BF62-191F-9A63-760C922E1259",
    "history": [{
        "last_seq": 77,
        "session_id": "735AF8E9-BF62-191F-9A63-760C922E1259"
    },
    {
        "last_seq": 67,
        "session_id": "908B46C9-06C4-A60D-9189-CCE33ECEB252"
    },
    {
        "last_seq": 59,
        "session_id": "7B7A1737-D6AB-23F2-B3C3-954DFAC3F91A"
    },
    {
        "last_seq": 52,
        "session_id": "A7B639E5-CCEF-E1DE-91B2-8E27AB4AFB5B"
    },
    {
        "last_seq": 45,
        "session_id": "D8A322C2-5421-D493-91FB-DD85258D2194"
    }],
    "replicator": "pouchdb",
    "version": 1,
    "last_seq": 77
}
使用PockDB执行某些操作时会发生这种情况,即此代码有时会触发它:

try {
  await db.bulkDocs(toBeSaved)
} catch (err) {
  errorCallback(err, importObj)
}
我知道是无法复制的文档,但我是否需要担心显示的错误消息?他们确实解释了如何处理冲突,但这似乎是一个我无能为力的问题。另外,由于这是一个批量操作,到底是哪个文档导致了冲突

编辑

My getLocalDb调用(对与Pocket/Coach的连接进行排序):


这似乎不是bulkDocs API的有效请求负载。buldDocs API需要一个数组,但您正在为失败的请求(我链接了错误的请求)传递一个objectIt的请求负载。
bulkDocs
方法工作正常,不会出错。我假设PockDB在幕后做了一些事情导致了这种情况,但不知道是什么原因。您收到了409个错误,因为当前版本的local/f.kaEuoL4i41KgUTkCHAyg==不是0-10,让我澄清一下。这个请求不是我自己提出的。这是在我的请求已经成功后,DB提出的请求。我试图了解这个错误是从哪里来的,如果它是一个问题,我能做些什么。我理解为什么会发生冲突,如果我更新的是我的文档,我会处理它。我处理不了这个。
getLocalDb: function (onSyncCompleteDispatch) {
    var localDb = new PouchDb(this.databaseName, {auto_compaction: true})
    var liveDb = this.getLiveDb()
    var self = this

    // Only send a db object once it has sync'd with the remote host.
    return new Promise(function (resolve, reject) {
      resolve(localDb)

      // We're not using continuous sync because the loading bars on the app will go wild
      // We don't need to get data without users clicking anything at this point.
      localDb.sync(liveDb, {
        live: false,
        retry: false
      }).on('complete', function (info) {
        var requiresReload = info.pull.docs_written > 0 || info.pull.docs_read > 0 || info.push.docs_written > 0 || info.push.docs_read > 0
        if (requiresReload) {
          typeof self.onSyncCompleteCallback === 'function' && self.onSyncCompleteCallback(info)
        }
      }).on('error', function (err) {
        if (err.message === 'getCheckpoint rejected with ') {
          // Don't need to resolve anything here as we resolved it above and nothing will have
          // changed as no connection is available.
          console.log('No live connection available, return local (without sync).')
        } else {
          typeof self.onSyncErrorCallback === 'function' && self.onSyncErrorCallback(err)
          reject(err)
        }
      })
    })
  }