
Cloud
Learning Level
Firebase Firestore is a cloud-hosted, flexible NoSQL database that scales automatically. It offers real-time synchronization, offline support, and powerful querying capabilities for modern web and mobile applications.
By the end of this lesson, you'll understand:
firebase init firestorenpm install firebaseJavaScript:
import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
projectId: "your-project"
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
export default db;Python:
import firebase_admin
from firebase_admin import credentials, firestore
cred = credentials.Certificate('serviceAccountKey.json')
firebase_admin.initialize_app(cred)
db = firestore.client()JavaScript:
import { collection, addDoc, setDoc, doc } from 'firebase/firestore';
// Auto-generated ID
const docRef = await addDoc(collection(db, 'users'), {
name: 'Alice',
email: 'alice@example.com',
age: 30
});
// Specific ID
await setDoc(doc(db, 'users', 'user123'), {
name: 'Bob',
email: 'bob@example.com'
});Python:
db.collection('users').add({
'name': 'Alice',
'email': 'alice@example.com'
})
db.collection('users').document('user123').set({
'name': 'Bob',
'email': 'bob@example.com'
})JavaScript:
import { doc, getDoc, collection, getDocs } from 'firebase/firestore';
// Get single document
const userRef = doc(db, 'users', 'user123');
const docSnap = await getDoc(userRef);
if (docSnap.exists()) {
console.log('User:', docSnap.data());
}
// Get all documents
const snapshot = await getDocs(collection(db, 'users'));
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});Python:
doc = db.collection('users').document('user123').get()
if doc.exists:
print('User:', doc.to_dict())
docs = db.collection('users').stream()
for doc in docs:
print(doc.id, '=>', doc.to_dict())JavaScript:
import { updateDoc, doc, increment } from 'firebase/firestore';
await updateDoc(doc(db, 'users', 'user123'), {
age: 31,
updatedAt: new Date()
});
// Increment field
await updateDoc(doc(db, 'users', 'user123'), {
points: increment(10)
});Python:
db.collection('users').document('user123').update({
'age': 31,
'updatedAt': firestore.SERVER_TIMESTAMP
})JavaScript:
import { deleteDoc, doc } from 'firebase/firestore';
await deleteDoc(doc(db, 'users', 'user123'));Python:
db.collection('users').document('user123').delete()JavaScript:
import { query, where, getDocs, orderBy, limit, collection } from 'firebase/firestore';
// Filter query
const q = query(
collection(db, 'users'),
where('age', '>=', 30)
);
const snapshot = await getDocs(q);
// Multiple filters
const q2 = query(
collection(db, 'users'),
where('age', '>=', 30),
where('isActive', '==', true),
orderBy('createdAt', 'desc'),
limit(10)
);Python:
docs = db.collection('users').where('age', '>=', 30).stream()
docs = db.collection('users')\
.where('age', '>=', 30)\
.where('isActive', '==', True)\
.order_by('createdAt', direction=firestore.Query.DESCENDING)\
.limit(10)\
.stream()firestore.rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
match /posts/{document=**} {
allow read: if true;
allow write: if request.auth != null;
}
}
}JavaScript:
import { writeBatch } from 'firebase/firestore';
const batch = writeBatch(db);
batch.update(doc(db, 'users', 'user123'), { points: increment(100) });
batch.update(doc(db, 'posts', 'post1'), { likes: increment(1) });
await batch.commit();Learn about Firestore real-time updates for live data synchronization, or explore Cloud Functions for server-side logic.
Resources
Ojasa Mirai
Master AI-powered development skills through structured learning, real projects, and verified credentials. Whether you're upskilling your team or launching your career, we deliver the skills companies actually need.
Learn Deep • Build Real • Verify Skills • Launch Forward