我正在使用以下Firebase-admin 6.5.0版
我的数据库结构如下
-DB
-chat
-branches
- 1
- 2
- users
- message
-1
- content : "hi",
- messageType : "text"
-2
- content : "hello",
- messageType : "text"
- 3
在上面的结构中,我在下面的分支级别听孩子
ref.child("chat").child("branches").addValueEventListener()
无论何时添加一些新消息,我都会在分支下接收所有数据,而不仅仅是更改的分支。即我在上述数据结构中获得了1,2,3所有分支数据。
有什么办法只能获取更改的子数据?
。即聊天-分支-2-消息-内容(如果内容被更改)。
根据以下回复进行编辑
如果我正在收听使用消息2所做的更改 ref.child(“聊天”).child(“分支”).addChildEventListener(new ChildEventListener())
对于分支子节点,它只给出2条消息,而对于消息子节点,它给出所有消息。如何仅获取已更改的消息子代详细信息。
我正尝试这样查询 chat.branches。$ branchid.message。$ messageid
答案 0 :(得分:2)
ValueEventListener
始终会获取您将其附加到的整个位置的快照。
如果要获取特定孩子的快照,则应使用ChildEventListener
。
ref.child("chat").child("branches").addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
System.out.println(snapshot.getKey()+" was added after "+previousChildKey);
}
public void onChildChanged(DataSnapshot snapshot) {
System.out.println(snapshot.getKey()+" was changed");
}
...
首次附加此侦听器时,将为每个分支调用onChildAdded
方法。之后,如果您更改了单个分支,则仅对该分支调用onChildChanged
方法。
答案 1 :(得分:1)
{{1}}
有关更多信息,您可以在此处 click