Firebase查询未提供结果集

时间:2017-11-07 02:44:08

标签: android firebase firebase-realtime-database

我的Firebase数据采用以下格式组织。当我尝试使用以下代码获取数据时,它永远不会输入$fields: 'files(name%2Cstarred)',即使我在该路径中的Firebase中有数据。

请忽略列表部分,在日志中我能够看到Firebase的正确路径,即:

  

会话/ 8masp4NLZrYL4HpziIU7uUZjRd73 / 8masp4NLZrYL4HpziIU7uUZjRd73

Snapshot of firebase

onDataChange

2 个答案:

答案 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);