2017-09-10 2 views
0

ちょうどFirebaseで始まり、それを愛する。 https://www.youtube.com/watch?v=Idu9EJPSxiYこの動画を視聴していて、特定のクエリに関するヘルプが必要でした。誰かが助けることができれば?Firebaseクエリー・ジョイン。助けが必要

以下のスキーマ/構造で、「David」という名前の人物が出席したすべてのイベントを照会したい場合はどうなりますか?

{ 
    "users": { 
     "key1": { 
      "name": "David", 
      "age": 33, 
      "profileImg": "http/......" 
     } 
     "key2": { 
      "name": "John", 
      "age": 25, 
      "profileImg": "http/......" 
     } 
    }, 
    "events": { 
     "fm": { 
      "name": "event1", 
      "date": 12332443456 
     } 
    }, 
    "eventAttendees": { 
     "fm": { 
      "key1": "David", 
      "key2": "John" 
     } 
    } 
} 

私はちょっと固まっていて、助けてください。ありがとう。 DB structure

答えて

0

あなたは、私がどこかにいくつかの構文エラーを持っているかもしれませんが、あなたのアイデア

を取得し、このような何か(私は例を示すために、Node.jsのにfirebaseモジュールを使用しています)

firebase.database().ref('eventAttendees').once('value', function (eventAttendeesList) { 
    var events = []; //array to store the events 
    eventAttendeesList.forEach(function (eachEvent) { //forEach list of eventAttendees node, Eg: fm 
     eachEvent.forEach(function (data) { //forEach value of current eventAttendees, Eg: jey1: "David", key2: "John" 
      if (data.val() == "David") { 
       firebase.database().ref('events').child(eachEvent.key).once('value', function (snapshot) { // get the event data 
        events.push(snapshot) // add to array of events David attended 
       }) 
      } //end of if 
     })// end of eachEvent.forEach 
    })// end of eventAttendeesList.forEach 
    return events; 
}) 

を試すことができます

  1. まずヨーヨーのそれぞれの各値
  2. 介しeventAttendeesノード(「FM」)、ループ中のデータの一覧を照会することですeventAttendeesノードのur値key1、data2( "David"、 "John")を取得するために別のループを実行する必要があるkey2があります。データは、それは我々がeachEvent.keyと一致するキーを持つイベントのノードの下イベントデータ用firebaseを照会し、私たちのイベント配列に追加します一致する場合は、あなたが
  3. を探している人に一致した場合ここでは、チェックします
+0

うん、うまくいく。しかし、10000sのeventAttendeesノードがある場合、それは非常に高価な操作ではないでしょうか?巨大なメガのデータをダウンロードすることを忘れないでください。ドキュメントとYouTubeのチュートリアルでは、データを構造化するこのような方法で、このような複数の結合クエリに役立つように見えました。何か不足していますか?迅速な応答btwありがとう。 –