Android Firebase查询获取值
我有一个子数据列表,希望有一个特定的值 我的Firebase结构: 现在,我只有子“Text”和currendUser“0zwtyRwgnogC8Qk91AtHj7amZb63” 那么我怎样才能得到“text”和“user_id”的值呢 我的源代码:Android Firebase查询获取值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个子数据列表,希望有一个特定的值 我的Firebase结构: 现在,我只有子“Text”和currendUser“0zwtyRwgnogC8Qk91AtHj7amZb63” 那么我怎样才能得到“text”和“user_id”的值呢 我的源代码: mDatabaseText = FirebaseDatabase.getInstance().getReference().child("Text"); query = mDatabaseText.startAt(mCurrentUse
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
请使用以下代码:
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
是您说您已经拥有的变量
希望有帮助。请使用以下代码:
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
是您说您已经拥有的变量
希望有帮助。mDatabaseText=FirebaseDatabase.getInstance().getReference().child(“Text”);query=mDatabaseText.orderByKey().startAt(mCurrentUser.getUid()).endAt(mCurrentUser.getUid()+“\uf8ff”);query.addValueEventListener(new ValueEventListener(){@Override public void onDataChange(DataSnapshot DataSnapshot){if(DataSnapshot.exists()){for(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){final String key=chatSnapshot.getKey();}}}}}}}这是什么?我不明白你的意思。很高兴听到这个消息。干杯!mDatabaseText=firebashdatabase.getInstance().getReference().child(“Text”);query=mDatabaseText.orderByKey().startAt(mCurrentUser.getUid()).endAt(mCurrentUser.getUid()+“\uf8ff”);query.addValueEventListener(新值EventListener(){@Override public void onDataChange(DataSnapshot DataSnapshot){if(DataSnapshot.exists()){for(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){final String key=chatSnapshot.getKey();}}}}}这是什么?我不明白你的意思。很高兴听到这个消息。干杯!