v9的FIRESTORE条件WHERE子句

v9的FIRESTORE条件WHERE子句

本文介绍了使用模块化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);

这篇关于使用模块化SDK v9的FIRESTORE条件WHERE子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 08:02