매우 가끔씩 내 모바일 앱 (Ionic 1)에서 데이터 손상이 발생합니다.PouchDB : 실시간 복제를 수행하는 동안 파손 된 데이터를 삭제합니까?
이 앱은 원격 CouchDB 서버에 로그인하는 사용자와 함께 작동합니다. 각 사용자는 서버에 자체 DB를 가지고 있습니다. 앱에는 한 번에 하나의 세션 만 있지만 사용자 A가 앱을 사용하고 로그 아웃 한 다음 사용자 B가 로그인하여 앱을 사용하는 경우가 있습니다.
로컬에서는 로그인 할 때 생성 된 다음 사용자의 원격 couchDB와 실시간으로 동기화 된 다음 로그 아웃 할 때 파괴되는 고유 한 PouchDB가 있습니다.
문제점 : 재현 할 수없는 매우 무작위 적이거나 드문 경우가 아니지만 사용자 A의 일부 데이터가 사용자 B의 데이터에 나타납니다! 그리고 더 이상, 사용자 A의 일부 데이터가 파기됩니다 (아마도 B로 전송, 확실하지 않음).
그래서, (: 원격으로 로컬 및 원격 지역에 두 가지의 옵션 { live: true, retry:true, continuous:true }
와 PouchDB.replicate
을) 내가 PouchDB.destroy
호출하면 실시간 동기화가 실행되는 동안 발생하는 궁금 해서요. destroy
복제 작업을 완전히 중단시키는 작업을하고 있습니까? 그렇지 않다면 일부 데이터가 이전 로컬 A 데이터베이스에서 새 로컬 B 데이터베이스로 이동되었다는 것을 설명 할 수 있습니다. (PouchDB 소스 코드를 찾아 보았으나 잃어 버렸습니다. Replication.cancel
이 onDestroy
에서 호출됨을 알 수있었습니다. 방법,하지만 내 사건에 대한 권리를 처리하는 확실하지).
많은 도움을 주셔서 감사합니다.
사용자가 로그 아웃하면 어떻게됩니까? 복제를 취소합니까? – Phonolog
아니요. 나는 destroy()를 호출한다. (확실하게 복제에서 호출 된 'cancel'을 만든다.) – bfredo123
흠. 복제를 먼저 취소하고 나중에 db를'파괴 '하려고한다. 최악의 경우는 : 암묵적으로'cancel'을 더 이상 호출하지 않으면 코드가 조금 더 읽기 쉬워졌습니다. 최선의 경우 : 문제가 해결되었습니다.) – Phonolog