gpt4 book ai didi

java - Firestore执行复合查询,事件 "MODIFIED"未拦截

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:13 25 4
gpt4 key购买 nike

我有一个由以下属性组成的模型“Post”:

class Post {
String timestamp;
Boolean isActive;
}

如果我尝试(在我的 Android 应用中)使用以下查询查询我的 Firestore DB 上的 Collection “帖子”:

[1]

db.collection("posts")
.whereEqualTo("isActive", true)
.orderBy("timestamp",Direction.DESCENDING)
.limit(3);

文档正确地显示在我的 RecyclerView 中,但如果我通过 Firestore 的 webConsole 更新文档的属性(例如 isActive),则事件“modified”不会被拦截到用于拦截我的集合实时更新的开关的 case“MODIFIED”中。

否则,如果我从上面的查询中删除条件 .whereEqualTo("isActive", true) 一切正常。

[2]

db.collection("posts")
.orderBy("timestamp",Direction.DESCENDING)
.limit(3);

否则,如果我从 [1] 查询中删除条件 .limit(3) 一切正常。

[3]

db.collection("posts")
.whereEqualTo("isActive", true)
.orderBy("timestamp",Direction.DESCENDING);

这是代码:

Query query = db.collection("posts")
.whereEqualTo("isActive", true)
.orderBy("timestamp",Direction.DESCENDING)
.limit(3);

ListenerGetPost = query.addSnapshotListener(
new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot snapshots,
@Nullable FirebaseFirestoreException e) {

for (DocumentChange doc : snapshots.getDocumentChanges()) {
switch (doc.getType()) {
case ADDED:
Post post = doc.getDocument().toObject(Post.class);
mPostList.add(post);
notifyDataSetChanged();
break;
case MODIFIED:
//Do something...
break;
}
}
}
});

提前致谢

最佳答案

当使用如下所示的查询时:

db.collection("posts")
.whereEqualTo("isActive", true)
.orderBy("timestamp",Direction.DESCENDING)
.limit(3);

必须创建 index 。这可以简单地通过在 Firebase 控制台中手动创建它来完成,或者运行您的应用程序并将 logcat 中显示的链接直接复制并粘贴到您的浏览器中。然后索引就会自动创建。出现此警告后,请查看您的 logcat:

FAILED_PRECONDITION: The query requires an index. You can create it here: ...

关于java - Firestore执行复合查询,事件 "MODIFIED"未拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49780315/

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