【问题标题】:Unable to query from firebase using orderByChild and equalTo无法使用 orderByChild 和 equalTo 从 firebase 查询
【发布时间】:2018-12-12 12:56:08
【问题描述】:

导出的json数据:

[ null, {
  "branch" : 6725,
  "id" : 1234,
  "lat" : 17.1234,
  "lng" : 78.345,
  "name" : "test",
  "time" : "2018-12-11 18:12:40"
}, {
  "branch" : 6724,
  "id" : 12345,
  "lat" : 17.234,
  "lng" : 78.23457,
  "name" : "suchit",
  "time" : "2018-12-12 09:34:22"
} ]

不知道 null 在那里做什么。

无法使用equalTo从上述结构中查询: 当前代码:

var branch=6725;
var cars_Ref = firebase.database().ref().child('liveusers');  
var cars =cars_Ref.orderByChild("branch").equalTo(branch);
                 cars.on('child_added',function(snapshot) {
                         var obj = snapshot.val();
                         console.log(obj.name + " is available.");
                 });

注意:也欢迎任何其他方法。

【问题讨论】:

  • 你在日志中得到了什么?
  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获得。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。
  • “无法”是什么意思? child_added 回调不会触发吗?你检查 JavaScript 控制台是否有错误?
  • 控制台没有错误。预期输出是索引 1 数据。
  • @FrankvanPuffelen 添加了来自导出的 JSON。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

试试这个:

var branch = 6725;
var  ref   = firebase.database().ref("liveusers");

ref.orderByChild("branch").equalTo(branch).on("value", function(snapshot) {
 snapshot.forEach(function(childSnapshot) {
      var childData = childSnapshot.val().;
        console.log(childData.name);
     });
 });

在这里,您将引用放在liveusers,然后在快照中循环并检索应该满足查询的名称。

【讨论】:

  • 这在功能上与问题中的代码有何不同?
  • @Suchitkumar 你可以为refchildSnapshot 做console.log 并告诉我你得到了什么
  • @Suchitkumar 如果你删除 orderbychild().equalTo() 你会在日志中得到任何数据吗?
  • 是的,在删除这两个子句后,我得到了两个条目。
  • 好的@Suchitkumar 试试orderByChild("branch").equalTo(6724)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2019-07-01
  • 2021-12-24
  • 1970-01-01
  • 2018-09-01
  • 2018-08-14
相关资源
最近更新 更多