想象一下,我在Firebase中有一个非规范化的数据集,该数据集已针对快速浅查询进行了优化(对象未深度嵌套)。
在我需要基于多个条件获取数据之前,一切都很好。
这里是一个例子:
如果我需要对按价格排序的“耐克”系列进行分页,我会这样做
ref.child('nike').orderByChild('price').limitToFirst(10)
但是,如果我想对按价格排序的“ nike”和“ adidas”进行分页,通常建议创建一个单独的表“ nike_adidas”,其中包含两个集合中的重复项。
ref.child('nike_adidas').orderByChild('price').limitToFirst(10)
问题是这样的组合很多,不可能为所有组合创建“索引表”。
在这种情况下您会怎么做? (仅考虑Firebase,例如,您无需为此类查询设置单独的ElasticSearch)
其他要求-我仍然希望客户端在对象发生更改/移动/删除后接收更新。
注意:这与Firestore复合查询(https://firebase.google.com/docs/firestore/query-data/queries#compound_queries)是分开的,因为Firestore也不支持Single queries across multiple collections or subcollections
。