2016-11-14 54 views
0

在Firebase中,我需要從表格/節點提取數據。在Firebase中,我需要根據2個表格提取數據。

我有一個表叫工作和另一個叫組織

需要的結果:我需要讓所有沒有任何工作的公司。

這是我的工作節點/表列表的虛擬實例(注意,這幾乎是一個複製品):

jobs: { 
    -k3resdfsfsdfsdf:{jobName: test1, companyId: 1h3hr4jrkfk5k5kff}, 
    -k3resdfsfsdfsdf:{jobName: test2, companyId: 2h3hr4jrkfk5k5kff}, 
    -k3resdfsfsdfsdf:{jobName: test3, companyId: 2h3hr4jrkfk5k5kff}  
} 

這是我的組織表(注意,這幾乎是一個複製品):

organisations: { 
    fsdfsddfsfsdfsdf:{companyId: 1h3hr4jrkfk5k5kff, companyName: comp a, address: 12 road}, 
    jhhjresdfsfsdfsf:{companyId: 2h3hr4jrkfk5k5kff, companyName: comp b, address: 11 road}, 
    hsdfskhjfsdfsdf: {companyId: 3h3hr4jrkfk5k5kff, companyName: comp c, address: 10 road}  
} 

我想誰不有工作在作業列表 我基本上要交叉引用的所有組織。

這是我的嘗試:

this.firebaseBaseUrl = "hiddenForStackOverflow"; 

    this.refOrg = new Firebase(firebaseBaseUrl + "/organisations"); 
    this.refJobs = new Firebase(firebaseBaseUrl + "/jobs"); 

    this.refOrg .once('value', function(snapshot: any) { 

      snapshot.forEach(function(orgSnapshot: any) { 

       var listOfOrganisations= orgSnapshot.val(); 

       // Not sure how to do this without looping through both lists, which could be very slow. 

      }); 
     }); 

回答

0

子節點添加到它關係到創造就業的

organizations 
    -company0 
    companyName: 
    address: 
    jobs: 
     k3resdfsfsdfsdf: true 
     k8jsmnima90djis: true 
    -company1 
    companyName: 
    address: 
    -company2 
    companyName: 
    address: 
    jobs: 
     k989ijikakmsks: true 

,那麼你可以查詢該組織的組織節點,在工作節點不存在。這斯威夫特3代碼片段將返回唯一公司1:

orgRef.queryOrdered(byChild:"jobs").queryEqual(toValue: nil) 
     .observe(.value, with: { snapshot in 
      print(snapshot)  
}); 

OR

只要保持一個open_job_count:節點,每個節點的公司,如果沒有就業機會打開這將是0,然後查詢open_job_count:0

+0

我無法添加任何新字段。原因是我已經有很多數據了,我需要像上面那樣查詢 – AngularM

+0

@AngularM好吧,那麼不幸的是,你將有很多循環要做,並讀取大量數據來循環。 – Jay

相關問題