Cloud Firestore की मूल बातें
रीयलटाइम डेटा पढ़ें और लिखें।
Cloud Firestore की मूल बातें, CoddyKit पर Android Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Android Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Cloud Firestore क्या है
Cloud Firestore, Firebase का लचीला और आसानी से विस्तारित होने वाला NoSQL डेटाबेस है। इसमें डेटा को documents के रूप में संग्रहीत किया जाता है, जिन्हें collections में समूहित किया जाता है।
- document, कुंजी/मान फ़ील्ड का एक समूह होता है (JSON ऑब्जेक्ट जैसा)।
- collection, दस्तावेज़ों का एक कंटेनर होता है।
- दस्तावेज़ों में subcollections हो सकते हैं, जिससे एक ट्री संरचना बनती है।
Firestore तुरंत मिलने वाले अपडेट भी देता है और पहले से offline काम करता है।
Firestore इंस्टेंस प्राप्त करें
डेटाबेस को Firebase.firestore के माध्यम से एक्सेस करें। वहाँ से collection("name") द्वारा किसी कलेक्शन और document("id") द्वारा किसी विशिष्ट दस्तावेज़ तक पहुँच सकते हैं।
रेफ़रेंस बनाना आसान होता है — वे डेटा का वर्णन नहीं, बल्कि एक स्थान का वर्णन करते हैं।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
val db = Firebase.firestore
val usersRef = db.collection("users")
val oneUser = db.collection("users").document("abc123")डेटा का मॉडल बनाना
Firestore, Kotlin की data classes के साथ आसानी से काम करता है। प्रत्येक प्रॉपर्टी दस्तावेज़ में एक फ़ील्ड बन जाती है।
इसमें no-argument constructor दें (डिफ़ॉल्ट मान इसे संभाल लेते हैं), ताकि Firestore दस्तावेज़ों को फिर से ऑब्जेक्ट में बदल सके।
data class Note(
val title: String = "",
val body: String = "",
val done: Boolean = false,
val createdAt: Long = 0L
)दस्तावेज़ लिखना
दस्तावेज़ बनाने या उसे पूरी तरह बदलने के लिए set का उपयोग करें। add से Firestore को आईडी बनाने दें या document(id).set(...) से अपनी आईडी चुनें।
ये कॉल Tasks लौटाती हैं; coroutine के साथ आप उन पर await() कर सकते हैं।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
import kotlinx.coroutines.tasks.await
suspend fun addNote(note: Note): String {
val ref = Firebase.firestore
.collection("notes")
.add(note) // auto-generated ID
.await()
return ref.id
}दस्तावेज़ पढ़ना
get() किसी दस्तावेज़ को एक बार प्राप्त करता है। toObject(Note::class.java) से उसे अपनी डेटा क्लास में बदलें।
हमेशा exists() जाँचें — अनुपस्थित दस्तावेज़ का रेफ़रेंस ऐसा स्नैपशॉट लौटाता है, जो वास्तव में मौजूद नहीं होता।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
import kotlinx.coroutines.tasks.await
suspend fun loadNote(id: String): Note? {
val snapshot = Firebase.firestore
.collection("notes")
.document(id)
.get()
.await()
return if (snapshot.exists()) snapshot.toObject(Note::class.java) else null
}अपडेट करना और हटाना
update दस्तावेज़ के बाकी हिस्से को छुए बिना विशिष्ट फ़ील्ड बदलता है। delete पूरे दस्तावेज़ को हटा देता है।
यदि आप आंशिक लेखन चाहते हैं, जो दस्तावेज़ न मिलने पर उसे बना भी दे, तो set(..., SetOptions.merge()) का उपयोग करें।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
import kotlinx.coroutines.tasks.await
suspend fun markDone(id: String) {
Firebase.firestore.collection("notes").document(id)
.update("done", true)
.await()
}
suspend fun removeNote(id: String) {
Firebase.firestore.collection("notes").document(id)
.delete()
.await()
}कलेक्शन पर क्वेरी करना
फ़िल्टर को क्रम से जोड़कर क्वेरी बनाएँ: whereEqualTo, whereGreaterThan, orderBy, limit और अन्य।
क्वेरी एक QuerySnapshot लौटाती है; प्रत्येक दस्तावेज़ को अपने मॉडल में बदलने के लिए उन पर दोहराव करें।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
import kotlinx.coroutines.tasks.await
suspend fun pendingNotes(): List<Note> {
val snap = Firebase.firestore.collection("notes")
.whereEqualTo("done", false)
.orderBy("createdAt")
.limit(20)
.get()
.await()
return snap.documents.mapNotNull { it.toObject(Note::class.java) }
}रियलटाइम श्रोता
Firestore की सबसे बड़ी खासियत realtime सुविधा है। addSnapshotListener वर्तमान डेटा तुरंत देता है और फिर हर बदलाव अपने-आप भेजता है।
यह एक ListenerRegistration लौटाता है — काम पूरा होने पर अपडेट प्राप्त करना रोकने के लिए remove() कॉल करें।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
val registration = Firebase.firestore.collection("notes")
.whereEqualTo("done", false)
.addSnapshotListener { snapshot, error ->
if (error != null || snapshot == null) return@addSnapshotListener
val notes = snapshot.toObjects(Note::class.java)
println("Now have ${notes.size} pending notes")
}
// Later: registration.remove()रियलटाइम डेटा को Flow के रूप में
Compose में Firestore को Kotlin Flow के रूप में उपलब्ध कराना प्रचलित तरीका है। callbackFlow श्रोता के कॉलबैक को फ़्लो से जोड़ता है और संग्रहण रुकने पर awaitClose श्रोता को हटा देता है।
import com.google.firebase.Firebase
import com.google.firebase.firestore.firestore
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
fun notesFlow(): Flow<List<Note>> = callbackFlow {
val reg = Firebase.firestore.collection("notes")
.addSnapshotListener { snap, err ->
if (err == null && snap != null) {
trySend(snap.toObjects(Note::class.java))
}
}
awaitClose { reg.remove() }
}Compose में डेटा दिखाना
collectAsStateWithLifecycle() से फ़्लो का संग्रह करें और उसे LazyColumn में रेंडर करें। Firestore में बदलाव होते ही सूची अपने-आप अपडेट हो जाती है — मैन्युअल रीफ़्रेश की आवश्यकता नहीं होती।
@Composable
fun NotesScreen(viewModel: NotesViewModel) {
val notes by viewModel.notes.collectAsStateWithLifecycle()
LazyColumn {
items(notes) { note ->
ListItem(
headlineContent = { Text(note.title) },
supportingContent = { Text(note.body) }
)
}
}
}सुरक्षा नियम महत्वपूर्ण हैं
डिफ़ॉल्ट रूप से Firestore लॉक रहता है। Security rules तय करते हैं कि प्रत्येक पथ को कौन पढ़ या लिख सकता है — ये सर्वर पर चलते हैं और क्लाइंट इन्हें दरकिनार नहीं कर सकता।
एक सामान्य नियम है: उपयोगकर्ता केवल अपने प्रमाणीकरण uid से पहचाने गए डेटा तक पहुँच सकता है।
// firestore.rules
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null
&& request.auth.uid == userId;
}
}
}त्वरित जाँच
आप ऐसी Compose सूची चाहते हैं, जो अंतर्निहित Firestore डेटा बदलते ही तुरंत अपडेट हो जाए और जिसमें मैन्युअल रीफ़्रेश की आवश्यकता न हो। आप किस API का उपयोग करेंगे?
पुनरावृत्ति: Firestore
अब आप Cloud Firestore के साथ डेटा संग्रहीत और सिंक कर सकते हैं:
- डेटा documents के रूप में collections में रहता है; इसे Kotlin data classes से मॉडल करें।
add/setसे लिखें,getसे पढ़ें औरupdate/deleteसे बदलें।whereEqualTo,orderByऔरlimitसे क्वेरी करें।- रियलटाइम UI के लिए
addSnapshotListener(याcallbackFlow) का उपयोग करें। request.auth.uidपर आधारित security rules से डेटा सुरक्षित रखें।
अगला विषय: ऐप बंद होने पर भी Cloud Messaging से उपयोगकर्ताओं तक पहुँचना।
एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 36
- पाठ
- 152
अक्सर पूछे जाने वाले प्रश्न
क्या “Cloud Firestore की मूल बातें” पाठ निःशुल्क है?
हाँ — Android Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Cloud Firestore की मूल बातें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Cloud Firestore की मूल बातें” में मैं क्या सीखूँगा?
रीयलटाइम डेटा पढ़ें और लिखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Android Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Android Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Android Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“Cloud Firestore की मूल बातें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Android Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Android Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Firebase सेट अप करना
- Firebase प्रमाणीकरण
- Cloud Firestore की मूल बातें
- Cloud Messaging से पुश संदेश