Learn to query Firestore documents: Firebase setup, basic & compound queries, real-time updates, sorting, and error handling.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
Step 1: Set Up Firebase in Your Project
Before you can query documents in Firestore, you need to set up a Firebase project and integrate Firebase into your application. Follow the Firebase documentation to add the Firebase SDK to your application.
Step 2: Initialize Firestore
After setting up Firebase, initialize Firestore in your application. Ensure you import the necessary Firestore libraries.
// Import the functions you need from the SDK
import { getFirestore } from "firebase/firestore";
// Initialize Firestore
const db = getFirestore();
Step 3: Import Firestore Functions
You'll need to import the functions necessary to query documents from Firestore. These functions will depend on the types of queries you want to perform.
import { collection, query, where, getDocs } from "firebase/firestore";
Step 4: Perform Basic Queries
To query documents in Firestore, you need to specify the collection and the conditions of the query.
// Define the collection and the query
const q = query(collection(db, "users"), where("age", "==", 25));
// Execute the query
const querySnapshot = await getDocs(q);
// Process the results
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
Step 5: Perform Compound Queries
Firestore allows for compound queries, where you can chain multiple conditions together.
// Chain multiple conditions in a single query
const q = query(
collection(db, "users"),
where("age", ">", 20),
where("status", "==", "active")
);
// Execute the query
const querySnapshot = await getDocs(q);
// Process the results
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
Step 6: Use Order and Limit
You can sort query results and limit the number of results returned.
import { orderBy, limit } from "firebase/firestore";
// Define a query with sorting and limiting
const q = query(
collection(db, "users"),
orderBy("age"),
limit(5)
);
// Execute the query
const querySnapshot = await getDocs(q);
// Process the results
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
Step 7: Query in Real-time
To listen for real-time updates instead of executing one-time queries, use the onSnapshot function.
import { onSnapshot } from "firebase/firestore";
// Set up a real-time listener for a query
const q = query(collection(db, "users"));
const unsubscribe = onSnapshot(q, (querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
// Call unsubscribe() to stop listening to real-time updates
Step 8: Handle Errors
While querying, handle errors that might occur using try-catch blocks.
try {
const q = query(collection(db, "users"), where("age", ">", 20));
const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
} catch (error) {
console.error("Error querying documents: ", error);
}
By following these steps, you can perform queries on your Firestore database, ranging from basic to more advanced real-time queries, ensuring you can access and manipulate your data efficiently.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.