使用模块化SDK v9的FIRESTORE条件WHERE子句
如何使用Firebase模块化SDK(V9)执行带条件where()
子句的查询?
名称分隔版本(V8)查询示例:
const status = "live"
const publishedAfter = 1630607348811
let q = firebase.firestore().collection("articles")
// filters selected by users
if (status) q = q.where("status", "==", "live")
if (publishedAfter) q = q.where("publishedAt", ">", publishedAfter)
const qSnapshot = await q.get()
解决方案
选项1:有条件添加QueryConstraint
以以前为基准
let q = query(collection(firestore, "articles"))
// filters selected by users
if (status) q = query(q, where("status", "==", "live"))
if (publishedAfter) q = query(q, where("publishedAt", ">", publishedAfter))
const qSnapshot = await getDocs(q);
选项2:有条件地将QueryConstraints
添加到数组
const constraints = []
// filters selected by users
if (status) constraints.push(where("status", "==", "live"))
if (publishedAfter) constraints.push(where("publishedAt", ">", publishedAfter))
const q = query(collection(firestore, "articles"), ...constraints)
const qSnapshot = await getDocs(q);
相关文章