JavaScript中能否动态添加方法?Firestore查询可选where条件实现疑问
动态拼接Firestore查询条件的实现方法
Firestore 的Query实例是不可变的,每次调用.where()、.orderBy()等查询构造方法都会返回一个全新的查询对象,因此可以通过变量暂存查询实例的方式实现条件拼接,完全符合你的需求:
// 初始化基础查询 let query = db.collection("posts") // 按条件追加筛选规则 if (location !== "all") { query = query.where("location", "==", location) } // 执行最终拼接完成的查询 query.get().then((querySnapshot) => { // 原有业务逻辑 [...] })
如果有多个动态筛选条件,也可以按照同样的逻辑依次追加:
let query = db.collection("posts") // 国家筛选 if (location !== "all") { query = query.where("location", "==", location) } // 仅展示公开内容筛选 if (onlyPublicPost) { query = query.where("public", "==", true) } // 发布时间筛选 if (createTimeAfter) { query = query.where("createTime", ">", createTimeAfter) } query.get().then((querySnapshot) => { // 业务逻辑 })
你提到的行内拼接写法不符合JavaScript语法规范,无法直接运行,上述变量暂存的写法是Firebase官方推荐的动态查询构造方案。
内容的提问来源于stack exchange,提问作者Friendly Mushroom
相关产品推荐
相关产品推荐

