2017-05-26 59 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