Firebase观察密钥包含

时间:2018-03-03 07:13:59

标签: swift firebase firebase-realtime-database

我想要获取包含键入文本的快照。例如,节点看起来像这样

"Team": {
 "Yankees": {
    "uid1": "name",
    "uid2": "name"
   },
"Angels": {
   "uid1": "name"
   "uid3": "name"
 }

如果用户在搜索栏中键入yan,那么我想要获取" Yankees"快照。我看到了一些文件和堆叠在流动的帖子,并尝试了这样

ref.child("Team").queryStarting(atValue: "yan").queryEnding(atValue: "yan\u{f8ff}").observe

但它不起作用。我怎样才能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将数据库更改为:

"Team": {
"randomid": {
"team":"Yankees",
"uid1": "name",
"uid2": "name"
},
"randomid": {
 "team":"Angels"
 "uid1": "name"
 "uid3": "name"
}

现在你可以这样做:

ref.child("Team").queryOrdered(byChild: "team").queryStarting(atValue: "Yan").queryEnding(atValue: "Yan\u{f8ff}").observe

首先在上面的查询中,您需要使用queryOrdered()来了解您要订购哪个孩子。

同样在您的数据库中,节点Team不等于任何东西,它是具有子节点的父节点。

所以要解决这个问题,节点Team需要等于一个值(就像在这个答案中的数据库中一样),这样你就可以对它进行排序并在其上使用queryStarting和queryEnding。