无法使用查询参数

时间:2014-11-18 07:55:00

标签: json firebase

我正在尝试使用新的查询参数来搜索基于子值的元素。理想情况下,我希望能够做类似

的事情

https://dinosaur-facts.firebaseio.com/.json?orderBy="hash"&startAt=123&endAt=123

获取特定元素,只要我给它一个唯一的哈希值。在我的课程中,我意识到除了使用orderBy =“$ key”之外我无法进行任何排序。我甚至做了一个克隆演示恐龙事实数据集。我使用'export json'按钮导出数据,然后使用'import json'按钮将其导入我的数据集,并验证所有数据是否相同。然后我尝试进行概述here的演示查询,将“恐龙事实”替换为我自己的域名,并且它仍然不起作用。

当我尝试

curl https://myapp.firebaseio.com/.json?orderBy="height"

我得到的错误是:

{"error" : "Index not defined"}

但是,如果你尝试

curl https://dinosaur-facts.firebaseio.com/.json?orderBy="height"

你得到的正是你所期望的,所有的恐龙都按照它们的身高排序。这是我的规则的问题吗?为什么我不能做这个声称的功能?它没有推出给大家吗?我需要为每一个传递我的秘密令牌吗?因为当我这样做时,我收到一条错误,说我无法解析我的身份验证令牌。我真的不知道发生了什么,我只是想做查询...

1 个答案:

答案 0 :(得分:4)

为了能够对特定子节点进行排序,该子节点上必须有索引。您可以通过向仪表板中的安全性/规则添加.indexOn规则来添加此类索引,例如

       ".indexOn": ["hash"]

Firebase提供的大多数客户端API都具有排序/过滤的实现,即使没有索引,它们也可以对数据进行排序/过滤。这对于开发目的很方便。

但REST API没有客户端,因此只有在定义了正确的索引后才能进行排序/过滤。

请参阅:https://www.firebase.com/docs/security/guide/indexing-data.html

  

除非您使用REST API ,否则开发不需要索引。实时客户端库可以在不指定索引的情况下执行即席查询。随着查询数据的增长,性能会下降,因此,如果您预计会查询大量数据,则在启动应用程序之前添加索引非常重要。