2016-07-04 5 views
2

以下は私のfirebaseとコードです。UserのUser Johnキーを持つすべてのアクティビティを取得したいと思います。swift firebaseオブジェクトの子が同じキーを持つすべてのオブジェクトを取得する

{ 
    "John": { 
    "age": 21 
    } 
} 

解決するために:ss

let ref = FIRDatabase.database().reference().child("activities/") 
ref.queryOrderedByChild("User").queryEqualToValue("John").observeSingleEventOfType(.Value, 
     withBlock:{ 
      (snapshot) in 

      for record in snapshot.children 
      { 

      } 
     }) 
+0

更新してくださいあなたの結果/例外。 –

答えて

0

この は、ユーザーの実際の値は、このようなオブジェクトがあるときに、属性User == "John"を持つすべての活動を取るしようとしているクエリであるため動作しませんこの問題は、すべてのユーザーを保存し、users/userID/activitiesのアクティビティのIDだけを保持するノードを作成するデータ構造を変更する必要があります。たとえば、これはあなたのデータを構造化するよりよい方法だろう:

{ 
    "activities": { 
     "cycling": { 
      "users": { 
       "user1": true, 
       "user2": true 
      } 
     }, 
     "running": { 
      "users": { 
       "user1": true 
      } 
     } 
    }, 
    "users": { 
     "user1": { 
      "name": "John", 
      "age": 21, 
      "activities": { 
       "cycling": true, 
       "running": true, 
      } 
     }, 
     "user2": { 
      "name": "Tim", 
      "age": 20, 
      "activities": { 
       "cycling": true 
      } 
     } 
    } 
} 

次にあなたが を使用することができますが、これは助けなら、私に知らせてください;)

+0

私はこれに私のデータ構造を変更する場合、ユーザーがuser1で構成されている活動を取得する方法。この場合、アクティビティを「シックリング」と「実行中」に取得しますか? – Poke

+0

Ops、私は私の答えを編集しました! データを取得する方法に応じてデータを構造化する必要があります。そのため、これは良い解決策です –

関連する問題