如何在firebase Messages节点上发送给我的最后一条消息?

时间:2018-03-08 07:08:28

标签: android firebase firebase-realtime-database

第一个孩子是我的UID代码,很容易得到它,第二个孩子是发件人UID,我无法得到它 第三个孩子是一个独特的钥匙 我只是想为每个发件人检索最后一条消息

这是我的代码

 String my_Id = currentuser.getUid();
    dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
    dataQuery.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot getalldata, String s) {

            Map<String,Object> sender = (Map<String,Object>) getalldata.getValue());

            for (Map.Entry<String, Object> entry : sender.entrySet()){

                Map singleUser = (Map) entry.getValue();
                String sender_UID = entry.getKey(); 
                // I can't get UID of the sender so I can't get last message

            }


        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {


        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("szx", "onCancelled", databaseError.toException());
        }
    });

问题是我无法获取发件人的UID,因此无法获取邮件 有没有办法获得最后的消息,而无需知道发件人的UID? 如果不可能,那么如何获取每个发件人的每个UID并获取最后的消息?

this is message node

1 个答案:

答案 0 :(得分:1)

在您的数据库中,您有:

Messages
 idthatyoucanget
    senderid
        randomid

获取id,你无法尝试这个:

 String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot getalldata, String s) {

       String ids=getalldata.getKey();

        }

    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }
    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {


    }
    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("szx", "onCancelled", databaseError.toException());
    }
    });

由于您使用的是onchildadded,因此您无需迭代即可获取发件人ID。