我在实时数据库中有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');
}