Here's the full tree,하지만 아래에는 간단한 버전도 포함되어 있습니다.Firebase 쿼리 : 중첩 된 사전에서 주어진 값에 대한 모든 키를 반환하는 방법?
Survey:
DaysAvail:
Mon:
uid1
uid2
Tues:
....
FitnessLevel
Beginner:
uid1
내가 원하는 것은 uid를 반환하고 모든 부모를 반환하는 것입니다. 그래서, 에 의해 검색 uid1 월요일, 초급을 반환하고 싶습니다. 어떻게해야합니까? 다음은 현재 코드이지만, "beginner" "Monday"등과 같이 지정된 중첩 값에 대한 모든 uid를 반환합니다. 이는 비효율적이며 많은 반복 코드가 필요합니다.
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("Survey").observe(.value, with: {
snapshot in
for childSnap in snapshot.children.allObjects {
let snap = childSnap as! FIRDataSnapshot
if let snapshotValue = snapshot.value as? NSDictionary,
let snapVal = snapshotValue[snap.key] as? NSDictionary {
let daysofWeek = snapshotValue.object(forKey: "DaysAvail") as! NSDictionary
let availMonday = daysofWeek["Monday"] as! NSDictionary
let mondayUID = availMonday.allKeys
availMonday의 값은 :
가{
2x4hC66p3YYM5wTiXJINP5Hz0PK2 = 1;
LuA7dLLD4iPSkV5GNWJMEogAmwg1 = 1;
QEpyq9KRkrcoePkvQkJEnVOKxyE3 = 1;
}
mondayUID의 값 :
[2x4hC66p3YYM5wTiXJINP5Hz0PK2, LuA7dLLD4iPSkV5GNWJMEogAmwg1,
QEpyq9KRkrcoePkvQkJEnVOKxyE3]
의견이나 아이디어가 크게 감상 할 수있다!
너는 할 수 없다. 구조가 너무 깊다. 데이터를 [denormalize] (https://firebase.googleblog.com/2013/04/denormalizing-your-data-is-normal.html)하거나 구조를 변경하여 쿼리를 수행 할 수 있도록해야합니다. 또한 초등을 반환하는 uid1과 월을 반환하는 uid를 구별 할 수있는 것은 무엇입니까? – Jay