一尘不染

Firestore:多个条件where子句

javascript

例如,我对我的书籍清单有动态过滤器,可以在其中设置特定的颜色,作者和类别。该过滤器可以一次设置多种颜色,也可以设置多种类别。

   Book > Red, Blue > Adventure, Detective.

如何有条件地添加“ where”?

  firebase
    .firestore()
    .collection("book")
    .where("category", "==", )
    .where("color", "==", )
    .where("author", "==", )

    .orderBy("date")
    .get()
    .then(querySnapshot => {...

阅读 358

收藏
2020-05-01

共1个答案

一尘不染

如您在API文档中所见,collection()方法返回一个CollectionReference。CollectionReference扩展了Query。Query.where()和Query.orderBy()也返回Query对象。因此,您可以像这样重写代码:

var query = firebase.firestore().collection("book")
query = query.where(...)
query = query.where(...)
query = query.where(...)
query = query.orderBy(...)
query.get().then(...)

现在,您可以输入条件来确定要在每个阶段应用哪些过滤器。只需query为每个新添加的过滤器重新分配。

if (some_condition) {
    query = query.where(...)
}
2020-05-01