在Firebase中,我需要从表/节点中提取数据。
我有一个名为职位的表,另一个名为组织。
要求的结果:我需要让所有没有工作的公司。
这是我的作业列表节点/表的一个虚拟示例(注意这几乎是一个副本):
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 :(得分:0)
将子节点添加到将其与作业绑定的组织节点
organizations
-company0
companyName:
address:
jobs:
k3resdfsfsdfsdf: true
k8jsmnima90djis: true
-company1
companyName:
address:
-company2
companyName:
address:
jobs:
k989ijikakmsks: true
然后您可以查询作业节点不存在的组织。此Swift 3代码段仅返回company1:
orgRef.queryOrdered(byChild:"jobs").queryEqual(toValue: nil)
.observe(.value, with: { snapshot in
print(snapshot)
});
OR
只需在每个公司节点中保留一个open_job_count:节点,如果没有打开任务,它将为0.然后查询open_job_count:0