1

私はFirebaseプロジェクトに取り組んでいます。ここで私はテーブル内にユーザ情報を保存していました。 私の要件は、すべてのユーザーを表に表示することです。ここ は私のデータベーススナップショットは、私は私のBOD、電子メール、名前、性別を持つユーザーの配列を返すコードの上Firebaseデータベースから特定のフィールドを取得します。

 if let user = FIRAuth.auth()?.currentUser { 
      self.ref?.child("Users").observeSingleEvent(of: .value, with: { (snapshot) in 
       // Get user value 
       let value = snapshot.value as? NSDictionary 
       let name = value?["name"] as? String ?? "" 
       let email = value?["email"] as? String ?? "" 


      // ... 
      }) { (error) in 
       print(error.localizedDescription) 
      } 
     } 

を使用してデータベースからのすべてのユーザーのを取得することができます

enter image description here

です。 しかし、私は電子メールとユーザーの名前だけを取得したいです。 データベースから指定したフィールドのみをフェッチする方法はありますか?

+0

https://stackoverflow.com/questions/42287857/how-to-pull-the-data-partially-from-firebase-databaseを参照してください。 –

答えて

1

ノードを読み取ると、そのコンテンツ全体を取得する必要があります。したがって、パスの読み取り時に返されるデータからの特定のフィールドのみをフェッチする方法はありません。

あなたのユースケースで可能な場合は、必要な情報のみを取得するクエリの目的でデータを非正規化することをお勧めします。

これを行うには、Users-NameandEmailListのような別のノードを作成することができます。さて、この表では、ユーザーのuidをあなたの子供のキーとして持っていて、各エントリーには電子メールと名前フィールドしかありません。このような

何か: -

Users-NameandEmailList :{ 

     user1key :{ 
      name : "ABC" 
      email : "[email protected]" 
       }, 
     user2key : {..}, 

         } 

私は、これはデータの複製につながる可能性があることに同意していますが、ダウンロードの冗長性を最小限に抑え、速度を最適化したい場合は、これは移動するための方法です!

関連する問題