Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firestore conditional where clause using Modular SDK v9

How to perform a query with conditional where() clause using Firebase Modular SDK (v9)?

Example query in name-spaced version (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()
like image 701
Dharmaraj Avatar asked Mar 03 '26 01:03

Dharmaraj


1 Answers

Option 1: Conditionally adding QueryConstraint using previous as base

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);

Option 2: Conditionally adding QueryConstraints to an array

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);
like image 92
Dharmaraj Avatar answered Mar 05 '26 14:03

Dharmaraj



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!