繁体   English   中英

如何使用 OR-Query 和实时更新查询 Firestore

[英]How to query firestore with an OR-Query and realtime updates

我有一个这样的firestore查询:

docRef.whereEqualTo("A",1).whereEqualTo("B",3) 或 docRef.whereEqualTo("A",2).whereEqualTo("C",3)

由于 firebase 中的单个查询不可能做到这一点,我想在客户端合并它们。 我在 SO 上找到了一个帖子,您只需使用任务对象并等待它们完成。 但我真的很想拥有 ListenerRegistration 并使用该查询进行实时更新。 获取组合或查询的生活更新的最佳方式是什么。

顺便说一句:这是我正在谈论的代码(取自https://stackoverflow.com/a/50132229

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
Query firstQuery = rootRef...
Query secondQuery = rootRef...

Task firstTask = firstQuery.get();
Task secondTask = secondQuery.get();

Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
    @Override
    public void onSuccess(List<Object> list) {
         //Do what you need to do with your list
    }
});

正如评论所讨论的那样,合并查询没有更好或更少的“hacky”,因为在每个查询中使用侦听器并以返回的方式处理结果。 由于 Firestore 中的查询很浅,所有需要的查询,go 这种“额外的英里”,超出了直接可用的范围,可能听起来和看起来“hacky”,但它们通常是唯一的解决方案更复杂的情况。

对于这种情况,实际上没有真正好的或更好的选择,因此,总而言之,使用@DougStevenson 的选项可能对您有用,或者继续使用您的方法,以防它对您有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM