java - 如何获取在 firebase Messages 节点发送给我的最后一条消息?

标签 java android firebase firebase-realtime-database

第一个 child 是我的UID码,很容易拿到,第二个 child 是发件人的UID,我拿不到 第三个 child 是唯一的 key 我只想检索每个发件人的最后一条消息

这是我的代码

 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

最佳答案

在你的数据库中你有:

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。

关于java - 如何获取在 firebase Messages 节点发送给我的最后一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167302/

相关文章:

java - Proguard 问题与 jar 文件,如何找到丢失的 jar?

android - 在 Android 中使用 TLS 并禁用 SSL

java - Firebase:类 java.util.List 具有通用类型参数

android - 无法使用 Gradle 分发 'https://services.gradle.org/distributions/gradle-5.1.1-all.zip' 执行构建

java - 从 firebase 数据库 android 中查看特定类别中的图像的过程是什么

node.js - 使用 Node、EJS 和 Firebase 的实时数据库模板

java - Glassfish 将字符串 "ejb"附加到特定 mobule 的 EJB 的 JNDI

java - 在 java servlet 中创建异步进程

Java将所有 float 格式化为字符串

java - NoClassDefFoundError : com. sforce.soap.enterprise.Connector