【问题标题】:proper structure for query. not getting log output查询的适当结构。没有得到日志输出
【发布时间】:2015-12-19 14:36:38
【问题描述】:

我正在尝试对我上传的一些测试数据在 firebase 中做一个简单的 equalTo()。这是代码。

var ref = new Firebase("https://crackling-fire-1105.firebaseio.com/business");
ref.orderByChild("city").equalTo("Pétion-Ville").on("child_added", function(snapshot) {
  console.log(snapshot.key());
});

我在控制台中什么也没有。

如果我在自己的代码旁边使用 firebase doc 代码,它可以工作。https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries

    var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
  console.log(snapshot.key());
});

Index.on 错误我得到了。 (这已在下面的 cmets 中解决)

FIREBASE 警告:使用未指定的索引。考虑将 /business 的 ".indexOn": "city" 添加到您的安全规则中以获得更好的性能

第一次得到后,我添加了 .indexOn: "city"。我仍然收到该错误,并且在控制台中什么也没有。

这些是安全和规则控制台中的规则。

{
    "rules": {
        ".read": true,
        ".write": true,
        ".indexOn": "city"
    }
}

json结构如下:

{
 business {
     Joe's Designs: { 
                 "accountid"
                 "address"
                 "city"
                 "email"
                 "heading"
                 "headingid"
                 "objectId"
                 "phonenumber1"
                 "website"
                 }

            }
}

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javascript firebase firebase-security


    【解决方案1】:

    在您需要索引的键下方指定.indexOn

    {
       "rules": {
         "business": {
            ".indexOn": "\"city\""
         }
       }
    }
    

    这允许您为任何顶级键设置.indexOn 规则。

    通过查看您的数据,您似乎正在逃避密钥。我不确定您为什么要这样做,但这需要您使用转义值进行索引和查询。

    JSBin demo

    var ref = new Firebase("https://crackling-fire-1105.firebaseio.com/business");
    ref.orderByChild("\"city\"").equalTo("Pétion-Ville").on("child_added", function(snapshot) {
      console.log(snapshot.val());
    });
    

    【讨论】:

    • 谢谢。这样可行。关于为什么不将结果记录到控制台的任何想法?代码结构看起来正确。我在开发工具中没有收到任何错误。该请求正在命中服务器,我知道该城市有结果。但是控制台中没有任何记录。
    • 想通了。这与您存储密钥的方式有关。看看答案。
    • 这很有趣。我使用convertcsv.com/csv-to-json.htm 将 CSV 转换为 JSON。我注意到转义键(不知道它被称为那个),但在该站点上找不到没有执行此操作的转换。当我导入到 firebase 时,我看到钥匙不在那里,所以我觉得我很酷,但事实并非如此。我回到原始文件,看到了原型对象的键和属性,其中 """key""":"""foo""' 出于某种原因。你是怎么看到的?还在学习。谢谢。
    • 我通过在您的 URL 末尾附加 .json 来执行 REST 请求。很高兴一切看起来更好。如果没有其他考虑,您能否将答案标记为已接受?
    • 这样对你有用吗?我取出了 3x 报价,上传了数据,但仍然一无所获。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多