我正在尝试在我的firebase数据上设置自定义索引,以便在某些字段上进行排序.
这是我的数据:
获取https://testindexon.firebaseio.com/.json
{
"key1": {
"age": 80,
"name": "zabc"
},
"key2": {
"age": 90,
"name": "defg"
},
"key3": {
"age": 10,
"name": "hijk"
}
}
这是我的安全规则:
{
"rules": {
".read": true,
".write": true,
"testindexon": {
".indexOn": "age"
}
}
}
当我尝试订购索引的"age"属性时,我收到一个错误:
获取https://testindexon.firebaseio.com/.json?orderBy= "年龄"
错误400(错误请求)
{
"error": "Index not defined"
}
我可以通过重写我的安全规则来解决400错误,如下所示:
{
"rules": {
".read": true,
".write": true,
".indexOn": ["age", "name"]
}
}
但是当我尝试通过其中一个属性进行排序时,没有什么特别的事情发生(结果没有排序):
GET .... firebaseio.com/.json?orderBy="age"
{
"key1": {
"age": 80,
"name": "zabc"
},
"key2": {
"age": 90,
"name": "defg"
},
"key3": {
"age": 10,
"name": "hijk"
}
}
我错过了什么吗?我将不胜感激任何帮助.
最好,
状态变量
根据有关通过其REST API检索数据的Firebase文档:
REST API返回未完成的结果
JSON解释器不对结果集强制执行任何排序.虽然orderBy可以与startAt,endAt,limitToFirst或limitToLast结合使用以返回数据的子集,但返回的结果将不会被排序.因此,如果排序很重要,可能需要手动对结果进行排序.
该文档中确实存在样本和其他片段,似乎不同.但上述说法属实.
请记住,该orderBy参数用于更多内容,而不仅仅是返回有序结果.您还可以使用该方法过滤结果,即
GET 'https://testindexon.firebaseio.com/.json?orderBy="age"&equalTo=90'
Run Code Online (Sandbox Code Playgroud)
或者你会命令返回有限数量的结果:
GET 'https://testindexon.firebaseio.com/.json?orderBy="age"&limitToFirst=10'
Run Code Online (Sandbox Code Playgroud)
因此,在这些情况下,子节点在服务器上排序然后进行过滤,但返回值将/可能仍包含未确定顺序的剩余子节点.
| 归档时间: |
|
| 查看次数: |
1762 次 |
| 最近记录: |