синхронизировать pouchDB, но ограничить возвращаемые документы? - PullRequest
0 голосов
/ 08 апреля 2019

Я использую pouchdb, чтобы следить за изменениями в моем бэкэнде (couchdb), и помещаю недавно добавленный элемент в интерфейс. Вот код для синхронизации, но есть ли возможность ограничить возвращаемые документы?

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

Проблема безлимитных опций заключается в том, что я не могу получить, скажем, первые 10 или 20 записей.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Если честно, я не уверен, что синхронизация для вашего случая - правильный инструмент.

Просто синхронизируя часть данных, вы не сможете обеспечить обновление существующих документов.

Что вы можете сделать, если просто хотите получить, скажем, 10-20 новейших наборов данных - это периодически запрашиватьпросмотр на вашем сервере и сохранение результатов локально в памяти / localStorage / indexedDb, если вам не нужно редактировать их в автономном режиме.

Если вы хотите редактировать их в автономном режиме, вы можете поместить их в PouchDB с апстримомсинхронизации.Чтобы вставить их в базу данных при сохранении _rev, вы можете использовать PouchDBs bulkDocs Api с параметром {new_edits: false}

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

0 голосов
/ 08 апреля 2019

Если ваша цель - синхронизировать, но только для определенного количества документов, используйте наблюдатель 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 изменений в одном документе.

Если вы заботитесь о реальных документах, вам потребуется более сложная логика для отслеживания количества измененных документов.

...