2017-07-08 24 views
1

私は自分のアプリにGoogleのサインインを統合しており、ユーザーU-idを含む火災基地にデータをプッシュしています。私が直面している問題は、私は特定のデータをフェッチしたいと思っています。たとえば、ユーザーAがサインインして5データをプッシュし、ユーザーBがサインインして3データをプッシュします。ユーザーAのようなクエリが必要です。彼の5つのデータ、事前にユーザーB.Thanksに押されすぎず、データ:)それはfirebaseからすべてのデータをフェッチし、これを使用することによりAndroidのFirebaseから特定のデータを取得する方法

:私はすべてのこと.childを試してみました

databaseReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot data : dataSnapshot.getChildren()) { 
       FirebaseModel firebasemodel = 
     data.getValue(FirebaseModel.class); 
       firebasemodels.add(firebasemodel); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

。 orderbyと.equalToしかし、仕事did'nt

は私の構造は同様である:

My FireBase Structure

+0

dこの機能をuser_idを追加してuser_idに基づいてデータを取得することで – ashish

+0

私はそのユーザーデータをフェッチしている間に直面しているfirebase.theのユーザーIDを追加しています –

+0

私の答えがあなたに役立つことを確認してください。 – ashish

答えて

0

また、あなたのコードブロックに含まれていないデータへの参照を必要とします。だから、(これはこの前にする必要があります)の線に沿って何か:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("notepad-secure/notepad"); 
+0

Oncreateメソッドでこの行を追加しました –

0

このコード

FirebaseDatabase database; 
    database.getReference().child("notepad-secure").orderByChild("id").equalTo(user).addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.getValue() != null) { 
       for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) { 

        User userdet =childSnapshot.getValue(yourclass.class); 
        String note=userdet.note; 
        //Here you will get the string values what you want to fetch 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

は動作しませんでした:( –

0

を試し、firebaseから特定の値を取得するためにまず、あなたの子データ内のuser_idキーを追加し、それは以下のようになります。

id:"", 
note:"", 
title:"", 
user:"" 
user_id:"{id from which user have you uploaded data}" 

そして、あなたが注意以下 のような特定のユーザデータと機能の下に呼び出すことができますより:あなたがデータをアップロードしているユーザーから「USER_ID」= ID

DatabaseReference reference = FirebaseDatabase.getInstance().getReference(); 

Query query = reference.child("notepad").orderByChild("id").equalTo("user_id"); 
query.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.exists()) { 
      // dataSnapshot is the "notepad" node with all children with id 
      for (DataSnapshot notepad: dataSnapshot.getChildren()) { 
       // do something with the individual "notepad_data" 
      } 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 
+0

.equalTo( "user_id");パラメータshuold user_id value? –

+0

値を追加しても機能しない:( –

+0

はい、私はあなたに子ノードの例を示します。または、特定のユーザーに一意の任意の値を渡すことができます。あなたのユーザーキーがユニークかもしれない – ashish

0

最初にUを差別化する必要があります.UはすべてのユーザーのFirebase UIDを取得できるFirebase認証を実装する必要があります。

String userId = FirebaseAuth.getInstance().getCurrentUser().getUid(); 

新しいノードにseperatlyで保存します。ことを仮定し

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); 

:あなたのFirebaseデータベースへのユーザーデータを追加すると すなわちFirebaseデータベース・インスタンスを取り、

databaserefernace.child("Data").Child("userID); 
+0

を試してみますか? –

+0

次にデータを取得する –

0

、あなたはこのようにFirebaseAuthオブジェクトによって提供される特定のuid使用して追加することができますあなたのデータベースの構造は次のようになります:Firebase root -> notepad-secure -> notepad、データを取得するには、このコードを使用することができます:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference notepadRef = rootRef.child("notepad-secure").child("notepad").child(uid); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String id = dataSnapshot.child("id").getValue(String.class); 
     String note = dataSnapshot.child("note").getValue(String.class); 
     String title = dataSnapshot.child("title").getValue(String.class); 
     String user = dataSnapshot.child("user").getValue(String.class); 
     Log.d("TAG", id + "/" + note + "/" + title + "/" + user); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
notepadRef.addListenerForSingleValueEvent(eventListener); 
関連する問題