Постоянство в автономном режиме Не работает в Cloud Firestore в AngularJS (как отладить?) - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь включить функцию сохранения диска Cloud Firestore в веб-приложении AngularJS со смешанными результатами. Данные действительно остаются, если я отключаю соединение inte rnet, но мои изменения в базе данных не сохраняются при повторном включении соединения.

Я звоню enablePersistence() из app.module.ts (как предложено здесь ).

  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    MatButtonModule,MatToolbarModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule,    
   AngularFireModule.initializeApp(environment.firebase),
   AngularFirestoreModule.enablePersistence(), /// <------- here's the call to enable persistence
   FirebaseUIModule.forRoot(firebaseUiAuthConfig),

Чтобы проверить это, я делаю следующие шаги:

  1. При включенном inte rnet загрузите приложение
  2. Включите Режим полета
  3. Нажмите кнопку, чтобы удалить документ - это работает, и я могу подтвердить, что из нескольких различных компонентов.
  4. Отключить режим полета
  5. После небольшой паузы удаленный элемент снова появляется в списке.

(та же проблема возникает, если я добавляю или редактирую документ.)

Я пробовал это с Chrome и Firefox с показанной и не отображаемой консолью разработчика, а также из локальной и развернутой версии приложения.

Вскоре после повторного включения соединения inte rnet я получаю это сообщение об ошибке в консоли, к сожалению, я не в состоянии понять.

zone-evergreen.js:651 Unhandled Promise rejection: Missing or insufficient permissions. ; Zone: <root> ; Task: Promise.then ; Value: FirebaseError: Missing or insufficient permissions.
    at new FirestoreError (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:181062:28)
    at https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:204117:46
    at Y.<anonymous> (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:204061:21)
    at nb (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206198:195)
    at Y.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.dispatchEvent (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206196:304)
    at Z.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.Z.ua (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206249:35)
    at Ad.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.Fa (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206240:203)
    at ic (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206204:371)
    at kc (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206202:354)
    at M.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.Ja (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206201:437) FirebaseError: Missing or insufficient permissions.
    at new FirestoreError (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:181062:28)
    at https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:204117:46
    at Y.<anonymous> (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:204061:21)
    at nb (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206198:195)
    at Y.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.dispatchEvent (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206196:304)
    at Z.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.Z.ua (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206249:35)
    at Ad.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.Fa (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206240:203)
    at ic (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206204:371)
    at kc (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206202:354)
    at M.push../node_modules/@firebase/webchannel-wrapper/dist/index.esm.js.g.Ja (https://XXXXXXXXXXXX.firebaseapp.com/vendor-es2015.js:206201:437)

1 Ответ

0 голосов
/ 10 мая 2020

Я знаю, что уже немного поздно, но я оставлю это на будущее:

Убедитесь, что вы не опубликовали два сайта на Firebase Убедитесь, что вы не выдаете другие разрешения от databases Ошибка возникает, когда есть два разных запроса от сайтов, к которым вы обратились, и каждый сайт хранит данные, которые отличаются от других. Вот простой пример:

export interface Items {
  name: string;
  price: Price;
}

Различные запросы:

export interface Items {
  name: string;
  price: Price;
  description: string;
}

Теперь вы можете убедиться, что данные, через которые вы проходите, не отличаются от ваших запрашивается в другом файле или месте

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