例如,我为我的书籍列表设置了动态过滤器,可以在其中设置特定的 colored颜色 、作者和类别.

   Book > Red, Blue > Adventure, Detective.

如何有条件地添加"where"?

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

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

推荐答案

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

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

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

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

Node.js相关问答推荐

正在try 使用Azure Function App上载文件时未上载文件(&Q;)

无法从MongoDB文档中保存的对象数组中获取对象的属性

Sass-TypeError:无法读取未定义的属性(正在读取';indexOf';)

验证器功能在mongoose 中不起作用

为什么我的 Node.js 应用程序在登录时无法正确验证密码(使用 Passport-local 和 bcryptjs)?

在mongoose虚拟属性中处理异步操作

MongoDB:通过匹配输入字符串或输入字符串中的单个单词进行搜索

Typescript :泛型类又扩展了另一个泛型类

找不到模块bcryptjs

为什么后端开发需要单独的服务器?

使用 $in 查询时,如何获取 mongoDB 中每个唯一 ID 的 n 个文档?

无服务器无法获取所有记录事件对象验证失败?

在本地运行 Cloud Functions 会出现错误functions.config() 不可用

来自 Node-aws 的 Dynamo Local:所有操作都失败无法对不存在的表执行操作

node.js 是否支持yields ?

如何undo撤消 Object.defineProperty 调用?

使用 nvm-windows 时更新 npm

用于排除多个文件的 node.js glob 模式

使用 node 的内置调试器判断变量?

路由后的 Node Express 4 中间件