2017-01-23 53 views
0

這是火力地堡結構,我提出: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),它產生的公司的所有對象。

回答

0

$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()返回一個數組,其中包含到數據庫的實時連接。一旦你完成了數組,它應該被銷燬。