2017-05-26 58 views
0

我有一個子數據列表並希望具有一定的值。Firebase查詢獲取值

我的火力地堡結構:

enter image description here

現在,我只有孩子「文本」和currendUser「0zwtyRwgnogC8Qk91AtHj7amZb63」

那麼如何才能得到的「文本」的值USER_ID ?」

我的源代碼:

mDatabaseText = FirebaseDatabase.getInstance().getReference().child("Text"); 
    query = mDatabaseText.startAt(mCurrentUser.getUid()); 
    query.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.exists()) { 
       for (DataSnapshot textSnapshot : dataSnapshot.getChildren()) { 

        /* String text = textSnapshot.getKey(); 
        Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT).show(); */ 

        TextModel textModel = chatSnapshot.getValue(TextModel.class); 

        String t = textModel.getText(); 
        Log.i("!!!!!!!text", t); 
        Toast.makeText(getActivity(), t, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

但是這段代碼不起作用,爲什麼?

我用查詢startAt

回答

2

請使用此代碼:

FirebaseDatabase rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference currentUserIdRef = rootRef.child("Text").child(currentUserId); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String userId = (String) ds.getKey(); 

      DatabaseReference userIdRef = rootRef.child("Text").child(currentUserId).child(userId); 
      ValueEventListener eventListener = new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        String user_id = (String) dataSnapshot.child("user_id").getValue(); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        throw databaseError.toException(); // don't ignore errors 
       } 
      }; 
      userIdRef.addListenerForSingleValueEvent(eventListener); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     throw databaseError.toException(); // don't ignore errors 
    } 
}; 
currentUserIdRef.addListenerForSingleValueEvent(eventListener); 

在這currentUserId是,你說你已經擁有它的變量。

希望它有幫助。

+0

mDatabaseText = FirebaseDatabase.getInstance()。getReference()。child(「Text」); query = mDatabaseText.orderByKey()。startAt(mCurrentUser.getUid())。endAt(mCurrentUser.getUid()+「\ uf8ff」); query.addValueEventListener(新ValueEventListener(){ @覆蓋 公共無效onDataChange(DataSnapshot dataSnapshot){ 如果(dataSnapshot.exists()){ 爲(DataSnapshot chatSnapshot:dataSnapshot.getChildren()){ 最終String鍵= chatSnapshot.getKey();}}}} – new

+0

這是什麼?我不明白你。 –

+0

所以我得到鑰匙... – new