Включение автономной персистенции Firebase для Интернета после того, как объект Firebase уже доступен - PullRequest
0 голосов
/ 01 октября 2019

Обнаружена ошибка
Попытка включить автономное постоянство для Интернета после доступа к методам Firebase выдает следующую ошибку:

You can only call enablePersistence() before calling any other methods on a Firestore object.

Контекст:
При начальной загрузке PWA пользователь отказался включить поддержку в автономном режиме. Поэтому для этого случая я ищу возможности разрешить его последующее включение.

Личные мысли:
Я считаю, что должна быть возможность принудительно выполнить повторную визуализацию приложения с помощьюфреймворк, который используется в настоящее время, и временно хранит флаг, который попросит firebase включить автономную поддержку. Но мне интересно, есть ли какой-нибудь Firebase SDK, предлагающий решение, которое дает возможность достичь этого более элегантного способа.

PS :
Кроме того, мне интересно, если опция автономной персистентности была включена,Считается, что автономное сохранение будет включено каждый раз, когда пользователь открывает PWA, если только данные, связанные с PWA, не были удалены с устройства

1 Ответ

1 голос
/ 01 октября 2019

Вероятно, вы имеете в виду Cloud Firestore, поскольку Firebase поддерживает автономную постоянную работу только для мобильных разработчиков, а не для веб-сайтов.

Как показывает ошибка, вам следует сначала позвонить enablePersistance(), когда вы импортируете / ссылаетесь на Firestore.
Я использую его в приложении Angular и вызываю его в моем appModule:

@NgModule({
    declarations: [AppComponent, CardComponent],
    imports: [
        BrowserModule,
        AppRoutingModule,
        AngularFireModule,

        AngularFirestoreModule.enablePersistence(),  <--

        AngularFireAuthModule,
        AngularFirestoreModule,
        HttpClientModule
    ],
    providers: [{ provide: FirebaseOptionsToken, useValue: environment.firebaseConfig }],
    bootstrap: [AppComponent],
})
export class AppModule {}

После включения автономного сохранения Firestore будет кэшировать все доступные документы до определенного предела кэша (по умолчанию 40 МБ, но вы можете изменить это значение). Если лимит кэша достигнут, Firestore удалит самые старые документы.

Если вы хотите узнать больше о включении полных автономных операций CRUD для PWA, посмотрите здесь .

Круто то, что все изменения, сделанные в автономном режиме, будут автоматически синхронизированы с сервером с помощью Firestore из коробки.


ОБНОВЛЕНИЕ

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

В Node.js, например:

var name = require.resolve('moduleName');

delete require.cache[name];
...