Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
firebase使用orderByKey()和equalTo()检索数据_Firebase - Fatal编程技术网

firebase使用orderByKey()和equalTo()检索数据

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

所以我试图在这个结构中找到数据“aaaabbbbaaaa”:

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
)来命名属性,或者(如果它没有真正的名称)将其用作密钥本身。