例如,我有一个动态的图书列表过滤器,我可以设置特定的颜色,作者和类别。
Book > Red, Blue > Adventure, Detective.
如何有条件地添加“where”?
firebase
.firestore()
.collection("book")
.where("category", "==", )
.where("color", "==", )
.where("author", "==", )
.orderBy("date")
.get()
.then(querySnapshot => {...
9条答案
按热度按时间cczfrluj1#
ajsxfq5m2#
由于
CollectionRef
在firebase web版本9中没有query
方法,我修改了@abk的回答。
xuo3flqw3#
正如您在API文档中所看到的,()方法返回一个CollectionReference。CollectionReference扩展Query,并且Query对象是不可变的。Query.where()和查询.orderBy()返回在原始Query之上添加操作的新Query对象您必须编写代码来记住这些新的Query对象,以便继续使用它们进行链调用。因此,您可以像这样重写代码:
现在,您可以通过添加条件来确定在每个阶段要应用哪些过滤器,只需为每个新添加的过滤器重新分配
query
即可。8ftvxx2r4#
Firebase版本9
这些文档没有涉及到这一点,但这里介绍了如何向查询添加条件where子句
这个答案的来源是我最好的朋友J-E^S^-U-S的一些直觉猜测和帮助
oxf4rvwz5#
使用Firebase版本9(2022年1月更新):
您可以使用多个where子句筛选数据:
fkaflof66#
除了@道格史蒂文森回答。当你有一个以上的
where
有必要使它更有活力,因为在我的情况。iqih9akk7#
请注意,多个
WHERE
子句本质上是AND
操作。lmvvr0a88#
如果你使用的是angular fire,你可以这样使用
reduce
:这是多个标记的示例...
您可以很容易地为任何非Angular 框架更改此设置。
对于OR查询(不能使用多个where子句),请参阅here。
lg40wkob9#
例如,有一个数组看起来像这样
然后你可以把你想设置查询条件的集合放到这个函数中。
您将会取得收集组查询的条件。