【问题标题】:Angular Firebase permission error to access data访问数据的 Angular Firebase 权限错误
【发布时间】:2018-07-11 18:14:35
【问题描述】:

我正在尝试使用 angular 访问 firebase,在我的服务中我有这个导入:

import { AngularFireDatabase , AngularFireList , AngularFireObject } from 'angularfire2/database';

我的构造函数和获取数据就像这些:

employees : AngularFireList<any>; // what comes from database
Employee : AngularFireObject<any>; // model

  constructor(public af:AngularFireDatabase) {
    this.employees = af.list('/employees') as AngularFireList<Employee>;
   }

   getEmployees(){
     return this.employees;
   }

在我的组件中,我像这样调用 getEmployees 方法:

ngOnInit() {
    this.service.getEmployees().valueChanges().subscribe(employees => {
    this.employees = employees;
    console.log(this.employees);
  });
  }

当应用程序运行时,我的 chrome 控制台中出现此错误:

ERROR Error: permission_denied at /employees: Client doesn't have permission to access the desired data. 

我拥有 Firebase 的完全访问权限,您可以在此处看到:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
} 

【问题讨论】:

  • 您问题中的规则适用于 firestore,而不是 firebase 实时数据库......

标签: angular firebase firebase-realtime-database angularfire2


【解决方案1】:

您编写的规则适用于 Firestore,但您的代码正在尝试访问 实时数据库...Here is the link for the real-time database rules

要将实时数据库规则设置为允许所有内容,请将它们更改为:

{
  "rules": {
    ".read": true,
    ".write": false
  }
}

【讨论】:

  • 我已经删除了写权限,你可以看到语法发生了变化
  • 我有同样的错误