Firebase Firestore의 오프라인 캐시를 설정하거나 제거하는 방법

개시하다


Firestore 캐시 주위의 메모입니다.

Firestore 캐시 설정


오프라인 캐시를 설정하려면 enablePersistence()를 사용합니다.
또한 전달synchronizeTabs: true을 통해 여러 탭도 데이터를 동기화할 수 있다.
await firebase.firestore().enablePersistence({synchronizeTabs: true});

var db = firebase.firestore();

...
이렇게 하면 매번 데이터를 얻을 때마다 데이터를 캐시한다.
indexedDB의 remoteDocuments 에 캐시되어 있습니다.

Firestore 캐시에서 데이터 가져오기


캐시에서 데이터를 가져오려면 get에서 지정하십시오 source:'cache'.
var user = await db.collection('users').doc(user_id).get({
  source: 'cache',
});
console.log(user.metadata.fromCache); // true
캐시에서 얻을 수 있다면 fromCache의 값은 true이다.
또 처음에는 캐시가 없기 때문에 오류가 발생할 수 있다.
이런 상황에 대한 대책으로는 먼저 cache부터 얻고 실패할 때try~catch로 보충한 다음server부터 얻는 방법도 있다.
var ref = db.collection('users').doc(user_id);
try {
  this.user = await ref.get({
    source: 'cache',
  });
}
catch (e) {
  this.user = await ref.get({
    source: 'server',
  });
}
캐시가 있을 때는 캐시에서 데이터를 얻고, 캐시가 없을 때는 서버에서 데이터를 얻기 때문에 신뢰할 수 있는 데이터를 얻을 수 있다.

Firestore 캐시 지우기


실행 clearPersistence() 은 indexedDB에 저장된 캐시를 지울 수 있습니다.
firebase.firestore().clearPersistence();

var db = firebase.firestore();

...
firestore()를 실행하기 전에 실행하지 않으면 오류가 발생할 수 있습니다.

끝말


정보가 매우 적기 때문에, 나는 스스로 총결산하였다.
이 일대에서는 인터페이스와 파라미터의 내용이 자주 변화하기 때문에 사용하기에는 여전히 위험할 수 있다.

Reference


https://firebase.google.com/docs/reference/js/firebase.firestore.Firestore?hl=ja#enablepersistence

좋은 웹페이지 즐겨찾기