我在Firebase中的数据为:
video 1
- lang: en
video 2
- lang: zh
video 3
- lang: fi
....
我想查询并返回lang值为en
或zh
的对象列表。
我发现使用
orderByChild: "lang",
equalTo: "en"
但是这个查询只返回" en"的对象,如何返回" en"或" zh"?
答案 0 :(得分:1)
由于Firebase是NoSQL数据库,因此没有WHERE
子句听起来像这样:
SELECT * FROM Video WHERE lang='en' OR lang='zh'
很遗憾,Firebase不允许多个查询可以满足您的需求。你可以做的是使用两次same reference
上等于所需语言的排序查询。这些查询应如下所示:
.yourRef.orderByChild("lang").equalTo("en");
.yourRef.orderByChild("lang").equalTo("zh");
现在,您可以将两个查询的结果组合在一起并在用户端显示。如果您需要使用两种以上的语言查询数据库,那么我建议您稍微更改数据库的结构。您需要创建另一个名为languages
的节点,您可以在其中添加每种特定语言的可用视频。新结构应如下所示:
Firebase-root
|
--- languages
|
--- en
| |
| --- video1: true
|
--- zh
| |
| --- video2: true
|
--- fi
|
--- video3: true
|
--- video4: true
通过这种方式,您可以添加所需语言的监听器并查看所有可用的视频。正如弗兰克所说,普通查询会更快。
希望它有所帮助。