Nic*_*ges 3 rest firebase firebase-realtime-database
我有一个简单的 Firebase 实时数据库,如下所示:
我使用它作为主体通过 PUT 调用创建了它:
[{
"complete": false,
"editMode": false,
"title": "Mow the lawn",
"id": 26,
"note": "This is a note for 27"
},
{
"complete": true,
"editMode": false,
"title": "Feed the dog",
"id": 27,
"note": "This is a note for 27"
}
]
Run Code Online (Sandbox Code Playgroud)
我想创建一个 REST GET 调用以根据 ID(在本例中为 26)获取第一个项目。
我的规则是这样的:
{
"rules": {
".read": true,
".write": true,
"todos": {
".indexOn": ["id"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试过:
https://<myid>.firebaseio.com/todos/26/id.json
Run Code Online (Sandbox Code Playgroud)
但这又回来了,null因为当然 dang '0' 和 '1' 在那里。
我可以做这个:
https://<myid>.firebaseio.com/todos/0.json
Run Code Online (Sandbox Code Playgroud)
并返回第一项,但是当我这样做时:
https://<myid>.firebaseio.com/todos.json
Run Code Online (Sandbox Code Playgroud)
'0' 和 '1' 没有返回,那么我怎么知道使用它们呢?
你明白我的困惑吗?
我错过了什么?
Firebase 实时数据库本身不存储数组。相反,它将数组元素存储在顺序键中,从"0".
当您"0"通过 REST API请求带有顺序键的位置/查询时,Firebase 将数据作为数组返回,这就是您在请求时看到的todo.json.
但是您可以通过键来寻址数组中的各个项目,这就是您通过请求todo/0.json.
以上所有内容都通过其完整和绝对路径获取单个节点。但似乎您想要的是通过查询其属性之一的值来检索节点。为此,您需要使用查询。
要获取"id"等于的项目26,您可以执行以下查询:
https://<myid>.firebaseio.com/todos.json?orderBy="id"&equalTo=26
Run Code Online (Sandbox Code Playgroud)
由于可能存在下多个子节点todos以id等于26,这个回报率这样的节点列表。对于您共享的 JSON:
{
"0": {
"complete": false,
"editMode": false,
"id": 26,
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |