Consulta no Firebase por filho de filho
Eu tenho uma estrutura de objetos no Firebase parecida com esta:
-KBP27k4iOTT2m873xSE
categories
Geography: true
Oceania: true
correctanswer: "Yaren (de facto)"
languages: "English"
question: "Nauru"
questiontype: "Text"
wronganswer1: "Majuro"
wronganswer2: "Mata-Utu"
wronganswer3: "Suva"
Estou tentando encontrar objetos por categorias, por exemplo, quero todos os objetos com a categoria definida como "Oceania".
Estou usando o Swift e não consigo entender o conceito de como consultar os dados.
Minha consulta agora se parece com isso:
ref.queryEqualToValue("", childKey: "categories").queryOrderedByChild("Oceania")
Onderef
é a referência ao Firebase nesse caminho específico.
No entanto, o que quer que eu tenha tentado, continuo recebendo TODOS os dados retornados, em vez dos objetos da categoria Oceania.
Meus dados estão estruturados da seguinte maneira:baseurl/questions/
Como você pode ver no exemplo de objeto, uma pergunta pode ter várias categorias adicionadas. Portanto, pelo que entendi, é melhor ter uma referência às categorias dentro de seus objetos.
Eu poderia mudar minha estrutura parabaseurl/questions/oceania/uniqueids/
, mas obteria várias entradas cobrindo os mesmos dados, mas com diferentesuniqueid
, porque a pergunta estaria presente nas duas categoriasoceania
egeography
.
Usando a estruturabaseurl/questions/oceania/
ebaseurl/questions/geography
Eu também poderia apenas adicionarunique ids
soboceania
egeography
que aponta para um específicounique id
dentrobaseurl/questions/uniqueids
em vez disso, mas isso significaria que eu teria que acompanhar muitas referências. Fazendo uma tabela de relações, por assim dizer.
Gostaria de saber se esse é o caminho a seguir ou? Devo reestruturar meus dados? O aplicativo ainda não está em produção, por isso é possível reestruturar completamente os dados sem maiores consequências, além de eu ter que reescrever meu código, que envia os dados para o Firebase.
Deixe-me saber, se tudo isso não faz sentido e desculpe pela parede do texto :-)