gpt4 book ai didi

java - Firebase admin java SDK - 当事件发生时获取更改数据而不是所有数据

转载 作者:行者123 更新时间:2023-12-01 19:47:29 25 4
gpt4 key购买 nike

我使用的是下面的 firebase-admin 版本 6.5.0

我的数据库结构如下

-DB  
-chat
-branches
- 1
- 2
- users
- message
-1
- content : "hi",
- messageType : "text"
-2
- content : "hello",
- messageType : "text"
- 3

在上面的结构中,我正在听下面的分支级别的 child

ref.child("chat").child("branches").addValueEventListener()

每当添加新消息时,我都会收到分支下面的所有数据,而不仅仅是更改的分支。即我在上述数据结构中获取 1,2,3 所有分支数据。

有没有办法只获取更改的子数据?

.即聊天 - 分支 - 2 - 消息 - 内容(如果内容发生更改)。

<小时/>

根据以下回复进行编辑

如果我正在监听消息 2 中完成的更改,使用ref.child("聊天").child("分支").addChildEventListener(new ChildEventListener())

对于分支子项,它只给出 2 个消息,但对于消息子项,它给出所有消息。如何仅获取更改的消息子详细信息。

我正在尝试像这样查询chat.branches.$branchid.message.$messageid

最佳答案

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 方法。

关于java - Firebase admin java SDK - 当事件发生时获取更改数据而不是所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52647856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com