У меня повреждение данных в мобильном приложении (Ionic 1), в очень редких случаях.PouchDB: уничтожает чистую, делая живую репликацию?
Приложение работает с пользователями, регистрирующимися на удаленном сервере CouchDB. Каждый пользователь имеет свой собственный db на сервере. В приложении есть только один сеанс за раз, но может случиться, что пользователь A использует приложение, выходит из системы, а затем пользователь B регистрируется для использования приложения.
Локально приложение имеет один уникальный PouchDB, который создается при входе в систему, а затем синхронизируется в реальном времени с удаленным couchDB пользователя, а затем уничтожается при выходе из системы.
Проблема: в очень случайных и непредсказуемых случаях, которые я не могу воспроизвести, некоторые данные пользователя A появляются в данных пользователя B! и более того, некоторые данные пользователя A уничтожаются (возможно, переданы B, но не уверены).
Итак, мне было интересно, что произойдет, если я вызову PouchDB.destroy
, пока работает прямая синхронизация (PouchDB.replicate
с опциями { live: true, retry:true, continuous:true }
в обоих направлениях: локально для удаленных и удаленных локальных). destroy
что-то делать, чтобы чисто остановить репликацию? Если нет, это может объяснить, что некоторые данные переносятся из старой локальной базы данных A в новую локальную базу данных B (я попытался просмотреть исходный код PouchDB, но потерялся в нем. Я мог просто увидеть, что Replication.cancel
вызывается из его onDestroy
метод, но не уверен, что он справится со всем, что подходит для моего случая).
Большое спасибо за помощь!
Что происходит после выхода пользователя из системы? Вы отменяете репликацию? – Phonolog
Нет, я этого не делаю. Я просто называю destroy() (который, по-видимому, делает «отмена» вызван репликацией, но не уверен) – bfredo123
Хм, я попытаюсь сначала «отменить» репликацию и «уничтожить» db. Худший случай: ваш код стал немного более читаемым, поскольку вы больше не называете 'cancel'. Лучший случай: Ваша проблема решена;) – Phonolog