firebase 使用 orderByKey() 和 equalTo() 检索数据
firebase retrieve data by using orderByKey() and equalTo()
所以我试图在这个结构中找到数据"aaaaabbbbbbaaaa":
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
下没有节点的 key 为 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 只能 query children by a value of a named property, the key or its priority。因此,如果您将数据结构更改为:
disney
studentList
-Jh46tlaNFx_YmgA8iMJ:
name: "aaaaabbbbbbaaaa"
-Jh474kAvoekE4hC7W3b:
name: "54ce1cbec4335cd3186105dc"
您可以按名称获取 children 订单:
ref.child("studentList")
.orderByChild("name")
.equalTo("54ca2c11d1afc1612871624a")
.on("child_added", function(snapshot) {
console.log(snapshot.val());
});
只是一个侧节点:如果您的实际节点值与您提供的示例中的节点值相似,您可能需要考虑使用这些值作为键;在我未经训练的眼睛看来,它们已经很独特了。
我想它是在您提出问题后添加的,此处的解决方案https://firebase.google.com/docs/database/admin/retrieve-data?hl=en#ordering-by-value 可立即满足您的需求:
ref("studentList").orderByValue().on("value", function(snapshot) {
snapshot.forEach(function(data) {
console.log(data.val());
});
});
所以我试图在这个结构中找到数据"aaaaabbbbbbaaaa":
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
下没有节点的 key 为 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 只能 query children by a value of a named property, the key or its priority。因此,如果您将数据结构更改为:
disney
studentList
-Jh46tlaNFx_YmgA8iMJ:
name: "aaaaabbbbbbaaaa"
-Jh474kAvoekE4hC7W3b:
name: "54ce1cbec4335cd3186105dc"
您可以按名称获取 children 订单:
ref.child("studentList")
.orderByChild("name")
.equalTo("54ca2c11d1afc1612871624a")
.on("child_added", function(snapshot) {
console.log(snapshot.val());
});
只是一个侧节点:如果您的实际节点值与您提供的示例中的节点值相似,您可能需要考虑使用这些值作为键;在我未经训练的眼睛看来,它们已经很独特了。
我想它是在您提出问题后添加的,此处的解决方案https://firebase.google.com/docs/database/admin/retrieve-data?hl=en#ordering-by-value 可立即满足您的需求:
ref("studentList").orderByValue().on("value", function(snapshot) {
snapshot.forEach(function(data) {
console.log(data.val());
});
});