在特定视图中监听pouchdb更改会返回所有文档

时间:2015-01-21 04:53:17

标签: view replication sync pouchdb

尝试在特定视图中检索pouchDB中的更改,但仍然接收allDocs ...我做错了什么?除了pache API doc(http://pouchdb.com/api.html#changes)之外,还没有找到任何教程或详细信息如何执行此操作。我已经测试了查看过滤选项而没有运气。

此视图的设计和保存为 / notes

function(doc) {
  if (doc.model == 'note') {
    emit(doc._id, doc);
  }
}

实时更改Feed:

pouch.changes({ 
  live: true,
  view: '_view/notes'
})
.on('change', function handleUpdate(change) {

  // log changed document
  pouch.get(change.id).then(function(row) {
    console.log(row);
  }

})

也许视图路径错了......? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

更简单地说,你可以这样做:

pouch.changes({ 
  live: true,
  include_docs: true
}).on('change', function (change) {
  if (change.doc && change.doc.model === 'note') {
    console.log(change);
  }
});

相信我;在changes()过滤器中使用视图只会增加不必要的复杂性,并且不会更快地执行。很抱歉没有在文档中说清楚。 :)

答案 1 :(得分:0)

默认情况下,changes()将返回数据库开头的所有更改。 因此,您将收到所有文档更改,这相当于对allDocs()的调用。

要从某个时间点获取更改,您必须提供选项参数,因为

来自PouchDB api doc

options.since: Start the results from the change immediately after the
given sequence number, you can also pass 'now' if you want only
new changes.

您可以通过调用 db.info()或通过 db.get(docId)检索文档时使用选项获取序列号local_seq