下面是我的示例结构:
channels
|
|____channel0
|
|___messages
|
|_______ uniqueKey0: true
|
|_______ uniqueKey1: true
messages
|
|_____ uniqueKey0
| |______ from: Alex
| |______ text: Hi!
|
|
|_____ uniqueKey1
|______ from: Kate
|______ text: Hello
我正在尝试使用 Firebase UI Recycler View 来查看消息。我有两个问题:
我正在做的是将/channels/messages 的 ref 提供给 FirebaseAdapter 并获取 key 。获取 key 后,我会获取详细信息,然后填充 View 持有者。在这种情况下,我不确定如何处理消息文本更改的情况。因为因为我正在监听/channels/messages,所以我没有收到消息更改的事件。
为了解决上述问题,我正在考虑以下结构,我知道这种结构违反了最佳实践,因为我们应该使数据尽可能保持平坦。所以我想知道在这种情况下采用这种方法真的那么糟糕还是更有意义?
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/