2017-06-26 10 views
1

私はしばらくの間、Google FireBaseで作業していましたが、入力に応じて大量のデータを取得する方法がないことに気付きました。FirebaseデータベースAndroid

例で説明します。 私の友達のセル番号をすべて含むArrayListがあるとします。 私の友達のそれぞれがdbに存在するかどうかを確認したいのであれば、私は配列のループを実行し、それぞれを別々にチェックする必要があります。

したがって、入力としてArrayListを送信し、存在するものだけを一度に返すオプションはありますか?主なアイデアは、アーリーリストの大きさのような火災基地に接続することではありません。

私はそれをgoogleにしようとしましたが、今はまだ良い解決策を見つけることができませんでした。 誰かが良いアイデアを持っている場合は、また感謝します。

答えて

1

これを実現するより良い方法は、phoneNumbersという名前のFirebaseデータベースに新しいノードを作成し、listenerを作成し、exists()メソッドを使用するよりも新しいノードを作成することです。

Firebase-root 
    | 
    ---- phoneNumbers 
     | 
     ---- +1-111-111-1111: true 
     | 
     ---- +1-111-111-1112: true 
     | 
     ---- +1-111-111-1112: true 

そしてここでは、コードに次のとおりです:返信男のための

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference phoneNumbersRef = rootRef.child("phoneNumbers"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if(dataSnapshot.child(phoneNumber).exists()) { 
      Log.d("TAG", "Number exists!"); 
     } else { 
      Log.d("TAG", "Number does not exist!"); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
phoneNumbersRef.addListenerForSingleValueEvent(eventListener); 
+0

ありがとうございますデータベースには、次のようになります。しかし、これは私のDBに既にあります。質問は少し異なります。私はDB 1000の数字と私の携帯電話に私は10人を持っていると仮定し、それらの5つは、アプリを持っていないと5。一般的には、あなたが持っている10人の人をループして、DBに存在するかどうかをチェックしますが、1000のループは良くありません。私はすぐにdbに10の配列を送信し、高速実行するために5を返すだけです。 – AmirM86

+0

トラフ1000のメンバをループさせても、確実に機能します。 Firebaseデータベースに各ノードのプロパティを1つだけダウンロードする方法はないので、これを実現するための1つの方法は、上で説明したように「新しいノード」を使用することです。したがって、電話番号の存在を確認する効率的な方法が必要な場合は、 'phoneNumbers'のリストだけをダウンロードしてください。適切な尺度のために、データベース内の電話番号のリストを正確に保持する必要があります。 –

+0

まあありがとう、私は上記の例と同じですが、データベースがSQLとして動作しないのでFirebaseは少し厳しいと思います。 – AmirM86

関連する問題