Here's the full tree,しかし私は単純なバージョンも含めています。Firebaseのクエリ:ネストされた辞書の特定の値のすべてのキーを返す方法は?
Survey:
DaysAvail:
Mon:
uid1
uid2
Tues:
....
FitnessLevel
Beginner:
uid1
私がしたいことは、uidの検索を返し、すべての親を返すことです。だから、 で検索する私は月曜日、初心者に戻したいと思います。これどうやってするの?ここに私の現在のコードはありますが、 "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]
すべてのフィードバックやアイデアをいただければ幸いです!
これはできません。構造が深すぎます。クエリを実行できるように、データを[非正規化](https://firebase.googleblog.com/2013/04/denormalizing-your-data-is-normal.html)するか構造を変更する必要があります。また、初心者を返すuid1と月を返すuidを区別するもの: – Jay