我的Firebase数据采用以下格式组织。当我尝试使用以下代码获取数据时,它永远不会输入$fields: 'files(name%2Cstarred)'
,即使我在该路径中的Firebase中有数据。
请忽略列表部分,在日志中我能够看到Firebase的正确路径,即:
会话/ 8masp4NLZrYL4HpziIU7uUZjRd73 / 8masp4NLZrYL4HpziIU7uUZjRd73
onDataChange
答案 0 :(得分:0)
child(userListRef.get(position));
以上是错误的,根据数据库,push()
下有userid
个随机密钥。因此,您必须检索推送键并将其添加到孩子。
检索密钥:
String key=conversation2Ref.push().getKey()
然后在查询中执行:
child(key)
答案 1 :(得分:0)
要获取这些值,而不是使用Conversation.cass
,您可以像这样使用String.class
:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("conversation").child("8masp4NLZrYL4HpziIU7uUZjRd73").child("8masp4NLZrYL4HpziIU7uUZjRd73");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String message = dataSnapshot.child("message").getValue(String.class);
long notificationCount = dataSnapshot.child("notificationCount").getValue(Long.class);
long profileId = dataSnapshot.child("profileId").getValue(String.class);
String profileName = dataSnapshot.child("profileName").getValue(String.class);
long time = dataSnapshot.child("time").getValue(String.class);
String type = dataSnapshot.child("type").getValue(String.class);
Log.d("TAG", message);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);