【发布时间】:2020-06-29 06:12:39
【问题描述】:
我正在尝试在 AngularJS 网络应用程序中启用 Cloud Firestore 的磁盘持久性功能,但结果好坏参半。如果我禁用 Internet 连接,数据确实会保留,但是当我重新启用连接时,我对数据库的编辑不会保留。
我从app.module.ts 打电话给enablePersistence()(正如建议的here)。
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),
为了测试它,我执行以下步骤:
- 打开互联网,加载应用程序
- 开启飞行模式
- 单击按钮删除文档 — 这很有效,我可以从几个不同的组件中确认这一点。
- 关闭飞行模式
- 在短暂的暂停后,已删除的项目再次出现在列表中。
(如果我添加或编辑文档,也会遇到同样的问题。)
我已经在 Chrome 和 Firefox(无论是否显示开发者控制台)以及本地和已部署的应用版本中尝试过此操作。
重新启用互联网连接后不久,我在控制台中收到此错误消息,很遗憾我无法理解。
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)
【问题讨论】:
-
这是安全规则拒绝查询的问题。请编辑问题以显示失败的特定查询以及会影响它的规则。
-
你的意思是我进行的 Firebase 调用,然后被缓存了吗?
-
您的 Firebase 规则如何?也许您的应用程序在切换到在线/离线期间以某种方式丢失了身份验证,如果您的规则不允许未经身份验证的用户进行交互,您将遇到
Missing or insufficient permissions错误。请分享它们,以便我们进一步帮助您
标签: angularjs firebase google-cloud-firestore