定义数据库规则的问题

时间:2017-11-16 14:21:37

标签: firebase firebase-realtime-database firebase-security

我在实时数据库中有2个节点,用户和客户。它们都与属性公司相关,属性公司是另一个节点。

用户集合如下。

    {
       users: {
      "2E6G3TCoBcONAh4Wt0TWMVcibgV2": {
        "companyid": "-KyeTbr9N-xEdpPElgjx",
      },
      "5mAfDeQchdROHsmxUVy8AqruGKF2": {
        "companyid": "-KyeTbr9N-xEdpPElgjx",
       },
      "6YoDdETq2He6kt5G3TE9RY0iLDr1": {
        "companyid": "-KvzqkH6FPauk3Giea12",
      }
     }
   }

客户节点如下。

customers: {
  "-KyUi8lpt9kSYcT1ForR": {
    "company": "-KyB8grqQDb1Bk23Ob9A",
  },
  "-KyUiKrcwLuxOh9SHru2": {
    "company": "-Ky7cg9AMvVuFQLZzmyM",
  },
  "-KyUijwDpYQctATFRKU1": {
    "company": "-KyB8grqQDb1Bk23Ob9A",
  }
}

这个想法是用户只能看到他公司的客户。为此,我提出的auth规则是

{
  "rules": {
    ".read": false,
    ".write": false,
    "users" : {
      ".read": "auth != null",
      ".write": "auth != null"
    },
    "customers": {
      "$uid": {
        ".read": "root.child('users').child(auth.uid).child('companyid').val() == data.child('company').val()"
      }
    }
  }
}

然而,在此之后我仍然无法从数据库中获取数据。当我使用angularfire2 sdk进行查询时,它不会返回任何值。

我需要帮助。提前谢谢。

编辑:

这是我用来从数据库中读取数据的代码。

getallCustomers() {
     console.log("Getting all the Customers.");                                                                                                          
     return this.afDB.database.ref('customers');
 }

0 个答案:

没有答案