我正在使用带有PHP Curl的Firebase REST API
我正在使用Firebase数据库遵守此规则:
"rules": {
// ...
"structure" : {
"pages" : {
".indexOn":["order"]
}
}
// ...
}
我的数据是:
// ...
"structure" : {
"pages" : {
"Some Random String or UID from Firebase" : {
"some_data" : "string",
"order" : 0
},
"Some Random String 2 or UID from Firebase 2" : {
"some_data" : "string",
"order" : 1
}
// ... and so on ...
}
}
我阅读了文档。来自Firebase here和here。 尝试使用orderByChild进行过滤:
GET - https://[my-project].firebaseio.com/structure/pages.json?orderByChild="order"&print=pretty
并且订购:
GET - https://[my-project].firebaseio.com/structure/pages.json?orderBy="order"&print=pretty
我得到了结果,但没有订购!
尝试更改规则并将其设置为$ key自定义和结果,并且没有任何订购。
我在文档中遗漏了什么?因为我多次阅读数据和规则就像“恐龙”这样的例子。
如果缺少某些信息,请告诉我编辑并放在这里
谢谢你的耐心等待!
答案 0 :(得分:3)
first documentation page you linked包含此警告(向上滚动一个屏幕);
过滤后的数据无序返回:使用REST API时, 自JSON以来,过滤结果以未定义的顺序返回 口译员不执行任何订购。如果您的数据顺序是 重要的是,您应该在应用程序之后对结果进行排序 从Firebase返回。
当与其他过滤选项结合使用时,订购会对过滤做出贡献:limitToFirst
,limitToLast
,startAt
,endAt
和equalTo
。排序和限制是在服务器上完成的,但是当您在客户端看到结果时,它们是无序的。