java - Firebase UI RecyclerView - 处理映射

标签 java android firebase firebase-realtime-database firebaseui

下面是我的示例结构:

channels
    |
    |____channel0
               |
               |___messages
                     |
                     |_______ uniqueKey0: true
                     |
                     |_______ uniqueKey1: true   


 messages
   |
   |_____ uniqueKey0
   |          |______ from: Alex
   |          |______ text: Hi!
   |
   |
   |_____ uniqueKey1
             |______ from: Kate
             |______ text: Hello

我正在尝试使用 Firebase UI Recycler View 来查看消息。我有两个问题:

  1. 我正在做的是将/channels/messages 的 ref 提供给 FirebaseAdapter 并获取 key 。获取 key 后,我会获取详细信息,然后填充 View 持有者。在这种情况下,我不确定如何处理消息文本更改的情况。因为因为我正在监听/channels/messages,所以我没有收到消息更改的事件。

  2. 为了解决上述问题,我正在考虑以下结构,我知道这种结构违反了最佳实践,因为我们应该使数据尽可能保持平坦。所以我想知道在这种情况下采用这种方法真的那么糟糕还是更有意义?

     messages
       |
       |____channel0
             |_____ uniqueKey0
             |          |______ from: Alex
             |          |______ text: Hi!
             |
             |
             |_____ uniqueKey1
                        |______ from: Kate
                        |______ text: Hello
    

最佳答案

是的,你可以使用这种方法:

 messages
 |
 |____channel0
        |_____ uniqueKey0
        |          |______ from: Alex
        |          |______ text: Hi!
        |
        |
        |_____ uniqueKey1
                  |______ from: Kate
                  |______ text: Hello

然后要获得你可以这样做:

DatabaseReference ref=FirebaseDatabase.getReference().getInstance().child("messages").child("channel0").orderByChild("from").equalTo(Alex);

然后您将能够收到文本:嗨!

而上面的数据结构其实是扁平化的,是这样的:

   messages
       channel0
             randomid
                keys:values
             randomid
                keys:values

这不是平坦的:

        messages
          channel0 
            channel1
              channel2
                 randomid
                    keys:values
                    name
                      username:peter
                 randomid
                    keys:values
                    name
                      username:peter

等等..

构建数据库时您所要做的就是考虑查询。如果我这样做或那样的话,是否容易查询?可以查询吗?

关于java - Firebase UI RecyclerView - 处理映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48783525/

相关文章:

android - 显示一个警报对话框,关闭并显示另一个警报对话框

javascript - 从 firebase 检查子字符串并检索数据

java - 为什么我的输出文件是空白的?

java - CXF JAX-WS 无法将参数发送到 Web 服务

java - SharedPreferences 问题 - 丢失上次保存的值

android - 以编程方式在层列表Android中设置位图

javascript - Firebase 在获取查询后运行设置查询

java - 尝试从 firestore 获取字符串

java - 如何从我的属性文件中重构 HTML 标记?

java - HSQLDB 内存数据库 JDBC 模板查询失败