javascript - 火存储 : Multiple conditional where clauses

标签 javascript node.js firebase google-cloud-platform google-cloud-firestore

例如,我的图书列表有动态过滤器,我可以在其中设置特定的颜色、作者和类别。 该过滤器可以一次设置多种颜色和多个类别。

   Book > Red, Blue > Adventure, Detective.

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

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

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

最佳答案

正如您在 API 文档中看到的,collection()方法返回 CollectionReference 。集合引用扩展 Query ,并且 Query 对象是不可变的。 Query.where()Query.orderBy()返回新的 Query 对象,该对象在原始 Query(保持未修改)之上添加操作。您必须编写代码来记住这些新的查询对象,以便您可以继续使用它们进行链接调用。因此,您可以像这样重写代码:

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

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

if (some_condition) {
    query = query.where(...)
}

关于javascript - 火存储 : Multiple conditional where clauses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562733/

相关文章:

javascript - anchor 标签列表创建

javascript - Angular 变量未在网页上正确显示

node.js - 如何使用 VSCode 通过 Firestore 触发器调试 Google Cloud Functions?

javascript - Node.js:将变量传递到文件

node.js - 用 typescript 实现快速 Controller 类

swift - 从 UIImagePicker 上传图片到 Firebase

javascript - 为什么没有在内容脚本中应用某些 CSS?

javascript - 使用 CSS、Javascript 或 SVG 反转底层元素的颜色

firebase - 如何从 Firestore 集合中获取所有唯一值?

ios - 一起使用 Google Analytics SDK 和 Firebase SDK