firebase使用orderByKey()和equalTo()检索数据
所以我试图在这个结构中找到数据“aaaabbbbaaaa”:firebase使用orderByKey()和equalTo()检索数据,firebase,Firebase,所以我试图在这个结构中找到数据“aaaabbbbaaaa”: disney studentList -Jh46tlaNFx_YmgA8iMJ: "aaaaabbbbbbaaaa" -Jh474kAvoekE4hC7W3b:"54ce1cbec4335cd3186105dc" 我用过这个 var ref = new Firebase("https://disney.firebaseio.com/"); ref.child("studentList").orderByKey().equalT
disney
studentList
-Jh46tlaNFx_YmgA8iMJ: "aaaaabbbbbbaaaa"
-Jh474kAvoekE4hC7W3b:"54ce1cbec4335cd3186105dc"
我用过这个
var ref = new Firebase("https://disney.firebaseio.com/");
ref.child("studentList").orderByKey().equalTo("54ca2c11d1afc1612871624a").on("child_added", function(snapshot) {
console.log(snapshot.val());
});
但我什么也没得到。怎么了?
我应该使用什么?在您给出的数据示例中,
studenList
下没有键为54ca2c11d1afc1612871624a
的节点
您的钥匙是-Jh46tlaNFx_YmgA8iMJ
和-Jh474kAvoekE4hC7W3b
。您可以通过以下方式轻松确定这一点:
ref.child("studentList").orderByKey().on("child_added", function(snapshot) {
console.log(snapshot.key()); // on newer SDKs, this may be snapshot.key
});
您似乎希望按照节点的值对节点进行排序,但目前Firebase上还没有这种操作。Firebase只能,或其。因此,如果您将数据结构更改为:
disney
studentList
-Jh46tlaNFx_YmgA8iMJ:
name: "aaaaabbbbbbaaaa"
-Jh474kAvoekE4hC7W3b:
name: "54ce1cbec4335cd3186105dc"
您可以通过以下方式按名称获取儿童订单:
ref.child("studentList")
.orderByChild("name")
.equalTo("54ca2c11d1afc1612871624a")
.on("child_added", function(snapshot) {
console.log(snapshot.val());
});
只是一个侧节点:如果您的实际节点值与您提供的示例中的节点值类似,那么您可能需要考虑使用这些值作为关键字;它们在我未经训练的眼睛看来已经很独特了。
我想它是在你提出问题后添加的,这里的解决方案可以立即满足你的需要:ref("studentList").orderByValue().on("value", function(snapshot) {
snapshot.forEach(function(data) {
console.log(data.val());
});
});
Firebase只能按命名属性的值查询子项,您的意思是key()不算作名称吗?该键不是命名属性,但您也可以按键排序(与使用
orderByKey()时一样)
。你不能按照节点的未命名值排序,这似乎是你想要的。如果你真的想要那种数据结构,你可以将该值填入.priority
(请参阅文档中的设置优先级
)并使用orderByPriority
。但现在这种情况更为常见(因为Firebase添加了orderByChild
)来命名属性,或者(如果它没有真正的名称)将其用作密钥本身。