【问题标题】:Ionic AngularFireDatabase saying not authorized even though rules are openIonic AngularFireDatabase 说即使规则是开放的也没有授权
【发布时间】:2018-10-25 22:03:59
【问题描述】:

概述

我正在尝试从 firebase 数据库中获取数据,但它说我没有权限,即使规则是完全开放的。

我通过关注this youtube tutorial 开始构建这个当前的实现。在使用已弃用的 FirebaseListObservable 遇到错误后,我根据 this update information 更改了我的提供程序。我还尝试使用默认的开放 Firebase 规则以及他们在the Firebase documentation 中为“全部允许”推荐的规则。

提供者

错误信息

Firebase 规则

规则的默认打开版本也不起作用,其行为allow read, write;

数据库

其他可能相关的信息

以与 1 minute into the mentioned youtube tutorial 相同的方式,我在 app.module.ts 的导入中调用 initializeApp(firebaseConfig),使用来自单击“将 Firebase 添加到您的网络应用程序”的信息

我正在使用angularfire2@5.0.0-rc.8.0,它是与npm install angularfire2 一起安装的。当我刚才运行npm list 时,它给了我以下两个警告,这可能与问题有关。我正在使用@angular/common@5.2.10@angular/core@5.2.10

npm 错误! peer dep 缺失:@angular/common@^6.0.0,angularfire2@5.0.0-rc.8.0 需要 npm 错误! peer dep 缺失:@angular/core@^6.0.0,angularfire2@5.0.0-rc.8.0 需要

【问题讨论】:

    标签: angular firebase ionic-framework angularfire2


    【解决方案1】:

    正如@brenthompson2 提到的,我分享了使用 Firestore(beta) 的方法

    在 app.module.ts 中

    import { AngularFirestoreModule } from 'angularfire2/firestore';
    
    ...
    @ngModule({
    ...
    imports: [
    ...
        AngularFireModule.initializeApp(environment),
        AngularFirestoreModule,
      ],
    })
    

    在任何角度模块或注射剂中

      constructor(private store:AngularFirestore) {
    
      }
      ...
    
      this.store.doc<any>(`users/${uid}`).snapshotChanges().subscribe(
        data=>{console.log(data.payload.data())}
      );
    
    
    

    与 firebase2/database 没有什么不同

    【讨论】:

      【解决方案2】:

      解决方案

      问题在于,我在 Firebase 仪表板中配置了 Cloud Firestore (BETA) 数据库,而不是 Realtime Database 数据库。在切换到使用正确的数据库并设置规则后,我能够使用基本的 firebase 库(不需要 angularfire2)从存储和实时数据库中获取数据。

      工作代码示例

      在此示例中,我获取了根节点的快照,然后根据该节点的键,遍历每个子节点的快照并将.val() 存储到关联的数组中。 (注意:新数据库中数据的布局与问题截图中的格式不同)

      import * as firebase from 'firebase';
      ...
      guardiansList: any = [];
      warriorsList: any = [];
      prayersList: any = [];
      ...
          try {
              firebase.database().ref().once('value', (snapshot) => {
                  snapshot.forEach((categorySnap) => {
      
                      switch (categorySnap.key) {
                          case "guardians":
                              categorySnap.forEach((imgSnap) => {
                                  this.guardiansList.push(imgSnap.val());
                                  return false;
                              });
                              break;
                          case "warriors":
                              categorySnap.forEach((imgSnap) => {
                                  this.warriorsList.push(imgSnap.val());
                                  return false;
                              });
                              break;
                          case "prayers":
                              categorySnap.forEach((imgSnap) => {
                                  this.prayersList.push(imgSnap.val());
                                  return false;
                              });
                              break;
                          default:
                              console.log("Found Unknown Key");
                              break;
                      }
      
                      return false;
                  });
              });
          }
          catch (e) {
              console.log(e);
          }
      

      【讨论】:

      • 我没有解决这个问题,希望有人发布一个成功使用新Cloud Firestore BETA的答案
      猜你喜欢
      • 2021-09-19
      • 2018-10-30
      • 2021-10-20
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2019-03-20
      • 2016-02-19
      • 2020-09-18
      相关资源
      最近更新 更多