java - Firebase 数据库仅监听特定子级

标签 java android firebase-realtime-database

我正在尝试使用 firebase 数据库制作聊天应用程序,但遇到了一些问题。 enter image description here
这是我的数据库。我想向消息添加一个监听器,但仅用于 User->UID->chats->Chat IDs 的值。我怎样才能做到这一点?

最佳答案

您需要执行两次:首先根据用户 ID 获取聊天 ID 列表,然后获取每个聊天 ID 的消息数据。

// consider you have you user (FirebaseUser) object ready
FirebaseDatabase.getInstance().getReference("Users/" + user.uid + "/chats")
    .addListenerForSingleValueEvent(new ValueEventListener() {
        ... onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                FirebaseDatabase.getInstance().getReference("Messages/"+snapshot.getKey())
                    .addListenerForSingleValueEvent(...
                        ... onDataChange(DataSnapshot messageSnapshot) {
                            // I changed the snapshot name to make it easier to read
                            // here messageSnapshot.getKey() is message ID
                            // and messageSnapshot.getValue() will contain data you need (I think)
                        }
                        ...
                    );
            }
        }
        ...
    });

希望这有帮助

关于java - Firebase 数据库仅监听特定子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028926/

相关文章:

java - @EJB 注入(inject)和企业命名上下文 - 两者之间的关系

Android SplashActivity 只显示一次

swift - Collection View 的 reloadData() 不起作用

ios - Firebase 数据库索引路径

java - 集合的最佳 Java 线程安全锁定机制?

java - 如何优雅地处理数千次 Quartz 失火?

java - [ValidationException : HV000041: Call to TraversableResolver. isReachable() 抛出异常。]

android - TextInputLayout 中 float 提示中的不透明背景

java - Android MediaPlayer 未知错误

javascript - Firebase POST 自定义 ID