2016-05-07 17 views
0

にユーザID内の子のIDへのアクセス私は、ユーザーのUIDであること示すトップIDで、次のような構造を持つfirebaseデータベースを持っている:Firebase

enter image description here この例では、唯一の2メニュー項目を示していますが、私のユーザーのほとんどをメニュー項目名のすべてのリストを作成したいのであれば、そのクエリはSwiftのように見えますか?具体的には、そのパスは迅速にどのように見えるでしょうか?現在、私の道は遠く、それにこれを行います

var itemNameRef = Firebase(url: "https://*******.firebaseIO.com/users/\(ref.authData.uid)/menu/") 

私はメニュー」の後にスペースに置くことができauthdata.uidに似たIDのプレースホルダーがあります

を以前と異なる構造の下で、使用して? [for] loop私は項目名を "menu"の下に子として格納することができました。その下に項目の詳細が格納されていましたが、別のSOユーザからの助言に基づいてランダムキーにスワップして正方形に戻りました。

アムIこれは正しい方法でやって?

ありがとう!あなたは今それを持っているように、メニュー項目名の一覧を照会する

+0

私はあなたの問題が何であるかを理解しようとしていますが、苦労しています。なぜ単に '' ref.observeEventType(.ChildAdded')(https://www.firebase.com/docs/ios/guide/retrieving-data.html#section-event-types)を使うことができないのですか?私も気付きましたあなたの質問にJSONツリーの画像が含まれています。実際のJSONをテキストとして置き換えてください。FirebaseデータベースのExportボタンをクリックすると簡単に取得できます。JSONをテキストとして検索すると、あなたの実際のデータでテストするために簡単にそれを使用し、私たちの答えに使用して、一般的には良いことです。 –

+0

あなたの現在のパスを使って値をループして、新しい配列を作成できませんでしたか? itemNames? – Ashmore11

+0

@FrankvanPuffelen次回は実際のJSONを配置します。そのようにエクスポートすることはできませんでした。ありがとう! –

答えて

1

var rootRef = Firebase(url: "https://*******.firebaseIO.com") 
let menuItems = rootRef.childByAppendingPath(UID).childByAppendingPath("menu") 
menuItems.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    for id in snapshot.children.allObjects as! [FDataSnapshot] { 
     //do what you want 
    } 
} 

をまた、ベストプラクティスのために、Firebaseための「フラット」データベース構造を構築してみてください(https://www.firebase.com/docs/web/guide/structuring-data.htmlを参照してください)。

+0

Julian!ありがとうございます。私はそのリソースを見ていきます。 –