一个列表中的元素我有利益 JSON结构与谁选择了它这样的用户列表:Android的火力地堡查询在里面
{
"-k1234" : {
"name" : "Biking",
"users" : {
"jX0XxPWKUScLBkCRfpoRNJG0n3P2" : true
}
},
"-k1235" : {
"name" : "Cooking",
"users" : {
"5Y17UfNRWxR6mx8j6MWKQQbTTWE3" : true,
"jX0XxPWKUScLBkCRfpoRNJG0n3P2" : true
}
},
"-k1236" : {
"name" : "Walking",
"users" : {
"5Y17UfNRWxR6mx8j6MWKQQbTTWE3" : true,
"PKozrktlSaPPLZ2FRxHOP7JkZdO2" : true
}
},
"-k1237" : {
"name" : "Yoga",
"users" : {
"5Y17UfNRWxR6mx8j6MWKQQbTTWE3" : true,
"jX0XxPWKUScLBkCRfpoRNJG0n3P2" : true
}
},
"-k1238" : {
"name" : "Reading",
"users" : {
"5Y17UfNRWxR6mx8j6MWKQQbTTWE3" : true,
"jX0XxPWKUScLBkCRfpoRNJG0n3P2" : true
}
}
}
每个用户都有一个利益部分,如下所示:
{
"-5Y17UfNRWxR6mx8j6MWKQQbTTWE3" : {
"interests" : {
"-k1235" : true,
"-k1236" : true,
"-k1237" : true,
"-k1238" : true
}
}
}
如果我做按名称查询至极过滤器很简单:
Query query = databaseReference.child(INTERESTS).orderByChild("name").equalTo("Biking");
但我不知道如何做一个查询过滤器至极没有为给定的用户选择兴趣,例如如果用户是"5Y17UfNRWxR6mx8j6MWKQQbTTWE3"
查询应返回datasnapshot
对象与“自行车”元素
"-k1234" : {
"name" : "Biking",
"users" : {
"jX0XxPWKUScLBkCRfpoRNJG0n3P2" : true
}
有什么办法,使这个?或者我应该更改JSON数据模型?
每个用户都有一个感兴趣的部分。我更新了问题,但我不知道如何进行查询本身。 –
要知道哪些interestes未被选中,您需要找到那些具有“false”值的兴趣。只需将'reference'放在所需的用户上,像这样:'databaseReference.child(USERS).child(userId).child(interest);'并添加一个'addChildEventListener'来查看哪些兴趣被设置为'false'。 –
我正在构建像文档参考中的数据:[link](https://firebase.google.com/docs/database/android/structure-data#fanout)对于给定的键引用(对于用户或兴趣)该值总是“真”,在另一种情况下该密钥不存在。所以我不能把兴趣设置为“虚假”。在您的解决方案中,您在接收到响应时进行筛选,并试图了解是否可以在服务器端进行筛选。 –