pouchdb put 仍然被 _rev 拒绝

pouchdb put is still rejected with _rev

我是第一次使用 pouchDB,如文档中所述,我正在使用 put(),因此它会自动处理修订。但是,当代码为 运行 并且存在具有相同 ID 的现有项目时,即使包含 _rev.

仍会被拒绝

这是我的代码:

var db = new PouchDB('blog')
...
function saveCategory(category) {
  var savedCategory = {
    _id: 'category' + category.id,
    _rev: '2-' + String(new Date().toISOString()),
    name: category.name,
    nicename: category.slug,
    post_count: category.count,
    description: category.description,
    link: category.link,
    parent: category.parent
  }   

  return db.put(savedCategory).then((response) => {
    $log.log(response)
  }).catch((error) => {
      $log.error('error saving category ',error)
  })
}

这不是 _rev 字段的目的。它始终由服务器而不是您的代码生成。要更新文档,您必须拉取整个文档(包括 _rev 字段),更新所需的字段,然后放置文档。 _rev的值应该和你从服务器上获取的值一样。

如果有新记录,则不需要设置_rev

The pocketDB guide has a very useful section about this.