我在Firebase中有一个对象结构,如下所示:
-KBP27k4iOTT2m873xSE
categories
Geography: true
Oceania: true
correctanswer: "Yaren (de facto)"
languages: "English"
question: "Nauru"
questiontype: "Text"
wronganswer1: "Majuro"
wronganswer2: "Mata-Utu"
wronganswer3: "Suva"
我正在尝试按类别查找对象,例如,我想要所有类别设置为“大洋洲”的对象。
我正在使用Swift,但似乎无法真正掌握如何查询数据的概念。
我的查询现在看起来像这样:
ref.queryEqualToValue("", childKey: "categories").queryOrderedByChild("Oceania")
ref
在该特定路径中对Firebase的引用在哪里。
但是,无论我尝试什么,我都会不断返回所有数据,而不是仅返回类别Oceania的对象。
我的数据结构如下: baseurl/questions/
正如您在对象示例中看到的那样,一个问题可以添加多个类别,因此据我所知,最好是对对象内部的类别进行引用。
我可以将结构更改为baseurl/questions/oceania/uniqueids/
,但是随后我将获得覆盖相同数据但具有不同数据的多个条目uniqueid
,因为该问题将同时出现在类别oceania
和之下geography
。
通过使用该结构baseurl/questions/oceania/
,baseurl/questions/geography
我还可以仅在其unique ids
下添加,oceania
而geography
该指向unique id
内部指向特定的内部baseurl/questions/uniqueids
,但这意味着我必须跟踪大量引用。可以说是建立关系表。
我想知道那是走还是走?我应该重组数据吗?该应用程序尚未投入生产,因此可以完全重组数据,而不会产生更大的后果,除了我不得不重写代码以将数据推送到Firebase之外。
让我知道,如果所有这些都没有意义,并且对文本的墙感到抱歉:-)
我认为这应该工作:
ref.queryOrderedByChild("categories/Oceania").queryEqualToValue(true)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句