gpt4 book ai didi

java - 如何在 Firestore Firebase 中跳过初始数据并仅触发新更新?

转载 作者:行者123 更新时间:2023-12-02 01:53:30 24 4
gpt4 key购买 nike

我到处寻找,但没有运气。我想查询 Firestore 以获取类型为 admin 的所有用户。像这样的东西:

SELECT * FROM users WHERE type=admin

当属性total发生变化时。如果我使用:

users.whereEqualTo("type", "admin").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot snapshots, @Nullable FirebaseFirestoreException e) {
for (DocumentChange dc : snapshots.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
//Not trigger
break;
case MODIFIED:
//Trigger
break;
case REMOVED:
//
break;
}
}
}
});

当我查询时,第一次触发案例 ADDED,当 total 更改时,case MODIFIED 再次触发(这就是想要的)。我只想要更改而不是所有初始数据,我不需要它。如何获得?

请帮助我,这是我项目的最后一部分。如何跳过case ADDED

最佳答案

当您在 Cloud Firestore 中监听实时更改时,使用 Firestore 查询的 addSnapshotListener()方法,它:

Starts listening to this query.

这基本上意味着第一次附加监听器时,您将获得与该特定查询相对应的所有文档。此外,每次文档中的属性发生更改时,您都会收到该更改的通知。显然,只有当监听器保持 Activity 状态且未被删除时,才会发生这种情况。

不幸的是,Firestore 监听器不会以这种方式工作,因此您无法跳过“已添加案例”。相反,您可以做的是在每个用户对象下添加一个 Date 属性( this 是您添加它的方式)并在客户端上查询您的数据库,根据对于自上次以来已更改的所有文档,添加到此新属性。

根据 Nick Cardoso 的评论,对于 future 的访问者可能会问为什么会发生这种行为,是因为他在评论中提到的原因。我还建议您查看 Doug Stevenson 的回答 post ,以便更好地理解。

关于java - 如何在 Firestore Firebase 中跳过初始数据并仅触发新更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412444/

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