AngularFire - 获取关键父orderbykey孩子
问题描述:
这是火力地堡结构,我提出:AngularFire - 获取关键父orderbykey孩子
我只是想在那里用户拥有了用户的UID孩子公司的关键。 我的语法如下:
self.companyid = $firebaseArray(firebase.database().ref('company').orderByChild('user/' + self.user_id.uid));
self.companyid.$loaded(function() {
console.log(self.companyid);
loadProject();
});
但是当我做console.log(self.companyid)
,它产生的公司的所有对象。
答
$firebaseArray()
函数将返回一组Firebase对象。根据提供的.ref('company')
,该数组将包含全部您的公司对象,而不管user.uid。 .orderByChild()
不会产生任何效果,因为它只是试图对你的uid进行排序,如果它存在于对象中,它将始终是相同的。
根据您的数据结构,查找您作为用户的公司对象的方式,您必须迭代公司对象数组和每个公司内的用户密钥,以测试匹配您的用户ID。
self.companies = $firebaseArray(firebase.database().ref('company'));
self.companies.$loaded(function() {
self.companies.forEach(function(companyObj) {
for (let key in companyObj.users) {
if (key === self.user_id.uid) {
console.log(companyObj.$id);
self.companyid = companyObj.$id;
loadProject();
}
}
});
self.companies.$destroy();
});
这是假定数据的设计方式是您的user_id只会出现在单个公司对象中。
请记住,$firebaseArray()
返回一个数组,其中包含到数据库的实时连接。一旦你完成了数组,它应该被销毁。