pouchdb put仍然被_rev拒绝

时间:2016-04-18 21:35:54

标签: javascript pouchdb

我是第一次使用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)
  })
}

1 个答案:

答案 0 :(得分:1)

这不是_rev字段的目的。它始终由服务器生成,而不是由您的代码生成。要更新文档,您必须提取整个文档(包括_rev字段),更新所需的字段,然后放入文档。 _rev的值应与从服务器获取时的值相同。

如果您有新记录,则无需设置_rev

The pocketDB guide has a very useful section about this