Firestore, как очистить Persence () - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно полностью очистить данные текущего пользователя после выхода из системы. Поэтому я использую функцию clearPersistence (). Необходимо выполнить terminate () перед clearPersistence ().

 this.afs.firestore.terminate().then(() => {
      this.afs.firestore.clearPersistence().then(() => {
      });
});

После запуска ниже для очистки локального кэша Firestore я получаю эту ошибку.

FirebaseError: The client has already been terminated.

Какой-нибудь совет, как повторно инициализировать экземпляр firestore или какой-нибудь лучший способ достигнуть? Спасибо.

1 Ответ

1 голос
/ 22 апреля 2020

Это не цель clearPersistence(). Я предлагаю внимательно прочитать документацию по API :

Должен вызываться, когда экземпляр firestore не запущен (после закрытия приложения или при первой инициализации приложения). При запуске этот метод должен вызываться перед другими методами (кроме settings ()). Если экземпляр firestore все еще работает, обещание будет отклонено с кодом ошибки невыполненного предварительного условия.

Примечание: clearPersistence () в первую очередь предназначено для помощи в создании надежных тестов, использующих Cloud Firestore. Он использует эффективный механизм удаления существующих данных, но не пытается надежно перезаписать или иным образом сделать кэшированные данные невосстановимыми. Для приложений, которые чувствительны к раскрытию кэшированных данных между сеансами пользователя, мы настоятельно рекомендуем вообще не включать сохранение.

Во втором абзаце говорится, что вы, вероятно, просто не должны иметь постоянство вообще.

В первом абзаце говорится, что использование clearPersistence во время теста может быть выполнено только сразу после первой инициализации экземпляра приложения Firestore (и перед любым запросом) или после того, как приложение полностью выключи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...