Rxdb: очистить удаленные элементы и старые ревизии, вручную реплицируя (копируя) базу данных rxdb?

#indexeddb #pouchdb #rxdb

#indexeddb #pouchdb #rxdb

Вопрос:

Я ищу способ реплицировать экземпляр rxdb локально, в браузере (из локального хранилища в локальное хранилище). Я где-то читал, что это единственный способ очистить удаленные элементы (сейчас не могу найти ссылку). На самом деле, то, что я хотел бы сделать, это:

  • очистить удаленные элементы (установлен флажок удалено)
  • очистить старые версии (старше определенной временной метки) Однако я не могу найти пример того, как это сделать. Мне нужно часто выполнять очистку, потому что мои данные меняются очень часто, и я бы быстро исчерпал хранилище браузера (а также строки в моей удаленной базе данных, с которыми я синхронизируюсь).

Это моя приблизительная идея, основанная на документах rxdb:

 // transfer data
const jsonResult = await myCurrentDb.things.dump()
const filteredJsonResult = jsonResult.filter(_ => !(_.deleted) amp;amp; <latestRevision>)

// wipe current collection
await myCurrentDb.things.remove()
await myCurrentDB.collection({name: 'things', ... }) // recreate

// re-import
myCurrentDb.things.importDump(filteredJsonResult)
  

Вопросы:

  1. Я подумываю о том, чтобы периодически запускать эту клиентскую часть (возможно, раз в 30 минут?) Подойдет ли такой подход? Я что-то упускаю или дамп / импортДамп не подходит?
  2. Мне нужна помощь в определении логики для условия «latestRevision» в фильтре? Как мне это выяснить?

Комментарии:

1. Ваш подход _deleted прекрасен, но у вас будет беспорядок _rev . Я рекомендую исследовать revs_limit , используя вместо этого разумный порог.

2. @RamblinRose спасибо за это! Я не знал об revs_limit этом; будет ли def использовать его. Хотелось бы, чтобы были какие-то руководящие показатели… например, если пользователи в среднем делают R ревизий объекта в день и одновременно регистрируются в L разных местах, ваш минимальный rev_limit должен быть N , прежде чем функциональность синхронизации заметно ухудшится. Что-то в этом роде.

3. Что касается показателей, это зависит от вашего варианта использования. Я сомневаюсь, что существует универсальное решение. Вы изложили разумные параметры. Удачи!