我在从 Firebase 实时数据库中查询嵌套数据时遇到问题。
给定以下示例数据结构:
"crossing":
"1346":
"data1": "value"
"data2": "value"
"projectName": "PN-1"
"1562":
"data1": "value"
"data2": "value"
"projectName": "PN-1"
"1933":
"data1": "value"
"data2": "value"
"projectName": "PN-2"
让我们假设这个集合将有数百个孩子。此外,在查询执行时间之前,ID 是随机的且未知的。如图所示,每个交叉点都有其他几个值。
起初,我必须列出键以给定值开头的所有十字路口。所以,例如,如果我搜索“1”,我想在这个简单的例子中得到所有的交叉点。
这个代码片段解决了这个问题。虽然,我仍然不确定这是否是实现这一目标的最佳方式。
firebase
.database()
.ref("crossing")
.orderByKey()
.startAt(self.searchedKey)
.endAt(self.searchedKey + "\uf8ff")
.once("value", function(snapshot) {
if (snapshot.val()) {
console.log(snapshot.val());
}
});
我的主要问题是,现在我必须列出其projectName值以给定值开头的所有过境点。
但是,我无法为此编写正确的查询。我不能使用.orderByChild()函数,因为子键(ID)是未知的。
我无法查询集合中的所有交叉点并遍历前端的所有元素,因为稍后这个对象将很大,有很多交叉点。正如我所看到的,某种顺序仍然是必须的。
慕慕森
相关分类