AngularFire - 获取关键父orderbykey孩子

问题描述:

这是火力地堡结构,我提出:AngularFire - 获取关键父orderbykey孩子

firebase structure

我只是想在那里用户拥有了用户的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()返回一个数组,其中包含到数据库的实时连接。一旦你完成了数组,它应该被销毁。