2017-01-14 13 views
0

IOSアプリケーションのデータベースとしてFirebaseを使用しています。データベースから複数のユーザーのデータを取得したい。ここで未知の子の名前からFirebaseとSwiftでデータを取得する

は私のデータベースの組織です:

  • ユーザー

    • USERID1
      • 場所:VALUE1
    • UserID2
      • 場所:値2
  • ...

私は、データベースのすべてのユーザーの位置データを取得します。

基本的なスナップショットfonction

ref.child("Users").child("").child("Location").observe(.value, with: { 
     snapshot in 

     for Location in snapshot.children { 
      self.locationsArray.append((Location as AnyObject).key) 
     } 
     print(self.locationsArray) 
    }) 

私の質問は:私は(私はできません)を指定しない場合でも、すべてのLocationsを取得する方法の名前であるユーザーID前に子供?ありがとう。

答えて

1

各ユーザーのuidとその場所を取得して出力するコードスニペットです。

我々はさらに.query

let usersRef = ref.child("users") 
usersRef.observeSingleEvent(of: .value, with: { (snapshot) in 

    for snap in snapshot.children { 
     let userSnap = snap as! FIRDataSnapshot 
     let uid = userSnap.key //the uid of each user 
     let userDict = userSnap.value as! [String:AnyObject] //child data 
     let location = userDict["Location"] as! String 
     print("key = \(uid) is at location = \(location)") 
    } 
}) 
+0

うわーはうまくいくようです!どうもありがとう! –

+0

質問に答えるとうまくいけば、受け入れてください! – Jay

+0

私は2分前にすることはできません。 –

1

Firebaseではロケーションだけを取得することはできません。 ありオプションの多くがありますが、私はあなたの場合には、より良いフィット2を参照してください。

  1. は、すべてのユーザーからすべてを取得し、その後、あなたが何をしたいあなたのコード内で管理します。
  2. ユーザーのIDと場所でのみ別の辞書を作成します。

    • UsersLocation
      • USERID1:位置1
      • UserID2:LOCATION2
      • だから、

    あなたのメインを変更するたびに目のオプションは次のようになります

あなたが変えなければならない配列これも。

+0

うんそれは私が考えていたものだと我々の結果を絞り込むことができます... –

+0

これは確かに可能なので、この答えは正しくありません(私の答えを見てください)。また、ここに提示されているより多くのオプションがあります) – Jay

+0

実際には、この問題に適合する2つの無限のオプションがあります。あなたが見たように、あなたがしたことはすべてのユーザーからすべてを得ることです。 –