【问题标题】:Cloud Firestore - Dynamic QueryingCloud Firestore - 动态查询
【发布时间】:2018-10-15 12:48:14
【问题描述】:

我在 Cloud Firestore 中有一个 Collection,它有一定数量的项目,我们称它为 Collection“X”。这个项目的数量将不断变化。在任何给定时间,我都想监听这个Collection 中的项目数,并在基于另一个“集合”的Query 对象上创建几个whereEqualto() 调用,我们称之为“Y”:

Query queryStore = FirebaseFirestore.getInstance()
            .collection("Y")
            .whereEqualTo(USER_ID_LABEL,  "item 1 from X")
            .whereEqualTo(USER_ID_LABEL,  "item 2 from X")
            .whereEqualTo(USER_ID_LABEL,  "item 3 from X");
            //Could be more than 3, could be less than 3, constantly changing

基本上,whereEqualTo() 的数量是动态的。

这种类型的查询可能吗?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    是的。 whereEqualTo() 返回一个 Query 对象,可用于构建您需要的最终查询。正如您在问题中所证明的那样,没有义务一次链接所有方法。你写的就是这样的:

    Query queryStore = FirebaseFirestore.getInstance().collection("Y")
    queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 1 from X");
    queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 2 from X");
    queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 3 from X");
    

    【讨论】:

    • 知道了,所以当我将queryStore 传递给我的FirebaseRecyclerOptions 时,它会考虑所有where 条件,而不仅仅是最后一个?换句话说,它是累积的?
    • 谢谢 - 还有办法清除/重置查询吗?
    • 不,Query 是一个不可变对象。再次仔细阅读javadoc(突出显示我的):“使用附加过滤器创建并返回一个查询..”。如果您想重新开始,请从您要开始构建的位置创建一个新查询。
    • 您完全重写了您的问题,这使我对第一个问题的回答无效。如果您有后续问题,您应该提出一个新问题,而不是重写您的第一个问题。
    • 注意 - 我已恢复
    猜你喜欢
    • 2020-06-29
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2019-08-23
    • 2020-10-31
    相关资源
    最近更新 更多