我在Firebase中的数据为:
video 1
- lang: en
video 2
- lang: zh
video 3
- lang: fi
....
我想查询并返回具有lang值en
或的对象列表zh
。
我发现是用
orderByChild: "lang",
equalTo: "en"
但是此查询仅返回“ en”的对象,如何返回“ en”或“ zh”的对象?
由于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
这样,您可以将收听者添加到所需的语言并查看所有可用的视频。正如弗兰克所说,它将比普通查询更快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句