gpt4 book ai didi

Firebase 查询孙子/多级查询

转载 作者:行者123 更新时间:2023-12-04 12:06:53 28 4
gpt4 key购买 nike

从我读过的所有内容来看,似乎不可能查询多级值。
我的数据结构如下所示:

{
"dinosaurs": {
"bruhathkayosaurus": {
"meta":{
"addedBy":"John",
"addedDate":"02021987"
},
"appeared": -70000000,
"height": 25
},
"lambeosaurus": {
"meta":{
"addedBy":"Peter",
"addedDate":"12041987"
},
"appeared": -76000000,
"height": 2.1
}
}
}

在不知道恐龙的键名的情况下,无论如何都可以查询元节点,仅检索 John 添加的项目。

在 JS 中类似:
    var ref = new Firebase('test.firebaseio.com/dinosaurs');
ref.orderByChild("meta/addedBy")
.equalTo('Peter')
.on("child_added", function(snapshot) {
console.log(snapshot);
});

有一些 hacky 解决方案,但没有一个是可扩展的,我应该将这些数据展平吗?

编辑:

我需要代码审查...这是一个可以接受的解决方案吗?
    var ref = new Firebase('test.firebaseio.com/dinosaurs');
ref.orderByChild("meta")
.on('child_added',function(snap1){
snap1.ref().orderByChild("addedBy")
.equalTo("Peter")
.on('child_added', function(snap2) {
console.log(snap2.val());
})
});

最佳答案

2016 年 1 月编辑:自此答案以来,Firebase 具有深度查询,因此您可以查询比 1 级更深的查询。

查询的深度只能是 1 级。有多种解决方案,但可以选择扁平化数据和链接/引用。

在上面的示例中,您可以创建另一个节点,将用户名( parent )链接到他们添加的恐龙( child )。然后可以读取约翰节点并立即知道他添加了哪些恐龙。然后能够访问有关该恐龙的其他相关数据;添加日期、出现日期、高度等。

users
John
bruhathkayosaurus
Styracosaurus
Lambeosaurus
Spinosaurus
Peter
Lambeosaurus
Seismosaurus

您可能想使用 uid 而不是名称,但您明白了。

此外,尚不清楚为什么列出的示例中有一个元节点,因此可以将其展平:
"dinosaurs": {
"bruhathkayosaurus": {
"addedBy":"John"
"addedDate":"02021987"
"appeared": -70000000
"height": 25
},

关于Firebase 查询孙子/多级查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172633/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com