Firebase Admin SDK (Node.js) - Time & Space Complexity
When using the Firebase Admin SDK in Node.js, it's important to understand how the number of operations grows as you interact with your database or services.
We want to know how the time it takes changes when we handle more data or requests.
Analyze the time complexity of the following operation sequence.
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
async function getUsersData(userIds) {
const usersData = [];
for (const id of userIds) {
const doc = await db.collection('users').doc(id).get();
usersData.push(doc.data());
}
return usersData;
}
This code fetches user data from Firestore for each user ID in a list, one by one.
Identify the API calls, resource provisioning, data transfers that repeat.
- Primary operation: Firestore document read via
doc(id).get()call. - How many times: Once for each user ID in the input list.
Each user ID causes one separate read request to Firestore, so the total number of reads grows directly with the number of user IDs.
| Input Size (n) | Approx. API Calls/Operations |
|---|---|
| 10 | 10 document reads |
| 100 | 100 document reads |
| 1000 | 1000 document reads |
Pattern observation: The number of API calls increases linearly as the input size increases.
Time Complexity: O(n)
This means the time to complete grows directly in proportion to the number of user IDs you fetch.
[X] Wrong: "Fetching multiple documents one by one is as fast as fetching them all at once."
[OK] Correct: Each separate fetch makes its own network call, so doing many one-by-one calls takes longer than batching or parallel fetching.
Understanding how your code scales with more data is a key skill. It shows you can write efficient cloud code that handles growth smoothly.
"What if we changed the code to fetch all user documents in a single batch call? How would the time complexity change?"