Firebase UI RecyclerView - 处理映射

Firebase UI RecyclerView - Handling mapping

下面是我的示例结构:

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


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

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

  1. 我正在做的是将 /channels/messages 的引用提供给 FirebaseAdapter 并获取密钥。获取密钥后,我获取详细信息,然后填充视图持有者。在这种情况下,我不确定如何处理消息文本发生更改的情况。因为我正在收听 /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

等等..

构建数据库时,您所要做的就是考虑查询。如果我做了这个或那个,查询方便吗?可以查询吗?