pouchDB同步但限制返回的文档?

问题描述 投票:0回答:2

我使用pouchdb来监视后端(couchdb)的更改,并将新添加的项目推入前端。这是同步代码,但有没有选项来限制返回的文档?

localDB.sync(remoteDB, {
    live: true,
    retry: true
  })

没有限制选项的问题是我无法获得前10或20条记录。

javascript pouchdb
2个回答
0
投票

如果您的目标是同步,但仅针对特定数量的文档,请使用change观察程序进行计数,并在达到限制时中止。

var count = 0,
    limit = 10;
var sync = PouchDB.sync('mydb', 'http://localhost:5984/mydb', {
  live: true,
  retry: true
}).on('change', function (info) {
  if (count++ >= limit) {
    sync.cancel();
  }
})

请注意,这将在10次更改后取消同步,这与10个文档不同。这可能是对同一文档的10次更改。

如果您关心实际文档,则需要更复杂的逻辑来跟踪已更改的文档数。


0
投票

说实话,我不确定同步是否适合您的用例正确的工具。

只需同步部分数据,您就无法确保更新现有文档。

你可以做什么,如果你只是想得到让我们说10-20个最新的数据集是定期查询服务器上的视图,并在不需要离线编辑它们的情况下将结果保存在内存/ localStorage / indexedDb中。

如果要离线编辑它们,可以将它们放入带有上游同步的PouchDB中。要在保留_rev的同时将它们插入到数据库中,可以使用带有选项{new_edits:false}的PouchDBs bulkDocs Api。

db.bulkDocs([
  {
    title  : 'Lisa Says',
    artist : 'Velvet Underground',
    _id    : "doc1",
    _rev   : "1-84abc2a942007bee7cf55007cba56198"
  },
  {
    title  : 'Space Oddity',
    artist : 'David Bowie',
    _id    : "doc2",
    _rev   : "1-7b80fc50b6af7a905f368670429a757e"
  }
],
{new_edits: false}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});

资料来源:

https://pouchdb.com/api.html#batch_create

© www.soinside.com 2019 - 2024. All rights reserved.