📖 Scenario: You are building a simple app that shows a list of books stored in Firebase Firestore. To improve user experience, you want to show only a few books at a time and let users load more books page by page.
🎯 Goal: Build a Firebase Firestore query that fetches books with a limit of 3 per page and supports pagination to load the next set of books.
📋 What You'll Learn
Create a Firestore collection reference called booksRef pointing to the 'books' collection
Create a query called firstPageQuery that limits results to 3 books
Create a variable called lastVisible to store the last document from the first page
Create a query called nextPageQuery that starts after lastVisible and limits results to 3 books
💡 Why This Matters
🌍 Real World
Pagination is essential in apps that show large lists of data, like books, products, or messages, to improve performance and user experience.
💼 Career
Understanding Firestore pagination is important for cloud developers building scalable and user-friendly applications.
Progress0 / 4 steps
1
Create Firestore collection reference
Create a Firestore collection reference called booksRef that points to the 'books' collection using collection(db, 'books').
Firebase
Hint
Use the collection function with db and the string 'books'.
2
Create a query to get the first page with limit
Create a query called firstPageQuery using query() with booksRef and limit(3) to get only 3 books.
Firebase
Hint
Use query() with booksRef and limit(3).
3
Get last visible document from first page
Create an async function called loadFirstPage that gets documents from firstPageQuery using getDocs(). Inside it, create a variable called lastVisible that stores the last document from the query snapshot using docs[docs.length - 1].
Firebase
Hint
Use await getDocs(firstPageQuery) and get the last document from documentSnapshots.docs.
4
Create query for next page using startAfter
Inside the loadFirstPage function, create a query called nextPageQuery using query() with booksRef, startAfter(lastVisible), and limit(3) to get the next 3 books after the last visible document.
Firebase
Hint
Use query(booksRef, startAfter(lastVisible), limit(3)) inside the function.
Practice
(1/5)
1. What does the limit() function do in Firebase queries?
easy
A. It restricts the number of documents returned by the query.
B. It sorts the documents in ascending order.
C. It filters documents based on a condition.
D. It deletes documents from the collection.
Solution
Step 1: Understand the purpose of limit()
The limit() function is used to control how many documents are returned in a query result.
Step 2: Compare options with limit() behavior
Only It restricts the number of documents returned by the query. correctly describes that limit() restricts the number of documents returned.
Final Answer:
It restricts the number of documents returned by the query. -> Option A
Quick Check:
limit() controls result count = B [OK]
Hint: Limit sets max items returned in query [OK]
Common Mistakes:
Confusing limit() with orderBy()
Thinking limit() filters data
Assuming limit() deletes data
2. Which of the following is the correct syntax to get the first 5 documents ordered by 'timestamp' in Firebase?
easy
A. db.collection('posts').limit(5).orderBy('timestamp')
B. db.collection('posts').orderBy('timestamp').limit(5)
C. db.collection('posts').limit(5, 'timestamp')
D. db.collection('posts').orderBy('timestamp', 5)
Solution
Step 1: Recall correct method chaining order
In Firebase, orderBy() must come before limit() to sort then limit results.
Step 2: Check each option's method order and parameters
db.collection('posts').orderBy('timestamp').limit(5) correctly orders by 'timestamp' then limits to 5 documents. Others have wrong order or invalid parameters.
Final Answer:
db.collection('posts').orderBy('timestamp').limit(5) -> Option B
Quick Check:
orderBy before limit = C [OK]
Hint: Always orderBy before limit in Firebase queries [OK]
What will be printed if the collection has 7 documents?
medium
A. 3
B. 4
C. 7
D. 0
Solution
Step 1: Analyze first page query
The first query orders by 'name' and limits to 3 documents, so it gets documents 1 to 3.
Step 2: Analyze next page query
The next query starts after the last document of the first page and limits to 3 documents. Since total is 7, remaining documents are 4 (docs 4 to 7), but limit(3) returns 3 documents.
Final Answer:
3 -> Option A
Quick Check:
7 total - 3 first page = 4 remaining, limit(3) = 3 [OK]
Hint: Subtract first page count from total for next page size [OK]
Common Mistakes:
Assuming next page always has same limit count
Ignoring startAfter effect
Counting all documents again
4. You wrote this Firebase pagination code but it throws an error:
A. Error: get() must be called before limit(); call get() first.
B. Error: limit() requires a field name; add 'age' as parameter.
C. Error: orderBy must come before limit; fix by swapping the methods.
D. No error; code works fine.
Solution
Step 1: Identify method order error
Firebase requires orderBy() before limit() to sort data before limiting.
Step 2: Fix by swapping method calls
Change code to db.collection('users').orderBy('age').limit(5).get() to fix the error.
Final Answer:
Error: orderBy must come before limit; fix by swapping the methods. -> Option C
Quick Check:
orderBy before limit fixes error = A [OK]
Hint: Always call orderBy before limit to avoid errors [OK]
Common Mistakes:
Calling limit before orderBy
Passing field name to limit
Calling get() too early
5. You want to paginate through a Firebase collection with 12 documents, showing 5 per page. After fetching the first two pages, how many documents will the third page query return?
hard
A. 0
B. 3
C. 5
D. 2
Solution
Step 1: Calculate documents fetched in first two pages
Each page shows 5 documents, so first two pages fetch 5 + 5 = 10 documents.
Step 2: Calculate remaining documents for third page
Total documents are 12, so remaining are 12 - 10 = 2 documents.
Step 3: Consider limit on third page
Limit is 5, but only 2 documents remain, so third page returns 2 documents.
Final Answer:
2 -> Option D
Quick Check:
12 - 10 = 2 documents left for page 3 [OK]
Hint: Subtract fetched docs from total to find last page size [OK]
Common Mistakes:
Assuming all pages have full 5 documents
Ignoring total document count
Confusing page number with document count
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.