一個列表中的元素我有利益 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)對於給定的鍵引用(對於用戶或興趣)該值總是「真」,在另一種情況下該密鑰不存在。所以我不能把興趣設置爲「虛假」。在您的解決方案中,您在接收到響應時進行篩選,並試圖瞭解是否可以在服務器端進行篩選。 –