मैं एक दस्तावेज़ स्नैपशॉट के लिए दस्तावेज़ चेंज ऑब्जेक्ट कैसे प्राप्त कर सकता हूं? मैं अपने कथन के अंदर दस्तावेज़ के परिवर्तन के प्रकार का उपयोग करना चाहता हूं। querySnapshot के साथ यह आसान है, लेकिन मुझे नहीं पता कि एक दस्तावेज़ में परिवर्तनों को सुनने के लिए इसे कैसे प्राप्त किया जाए।
val uid = FirebaseAuth.getInstance().uid
val documentReference = FirebaseFirestore.getInstance().collection("users").document(uid!!)
documentReference.addSnapshotListener{
documentSnapshot, e ->
when (documentSnapshot**what code needs to be here**.type) {
DocumentChange.Type.ADDED -> {}
DocumentChange.Type.MODIFIED -> {}
DocumentChange.Type.REMOVED -> {}
}
}
1 उत्तर
किसी एक दस्तावेज़ को सुनते समय आपको DocumentChange.Type
नहीं मिलता है। इसके बजाय आपको एक DocumentSnapshot
मिलता है जिसमें उस दस्तावेज़ की स्थिति होती है।
आप दस्तावेज़ को देखने और यह ट्रैक रखने से प्राप्त कर सकते हैं कि यह आपके श्रोता के लिए पहला कॉलबैक है या नहीं:
if (snapshot.exists()) {
if (isFirst) Log.i(TAG, "ADDED")
else Log.i(TAG, "MODIFIED")
}
else {
if (isFirst) Log.i(TAG, "NOOP")
else Log.i(TAG, "REMOVED")
}
या यदि आप शर्तों की एक सपाट सूची पसंद करते हैं:
if ( snapshot.exists() && isFirst) Log.i(TAG, "ADDED")
if ( snapshot.exists() && !isFirst) Log.i(TAG, "MODIFIED")
if (!snapshot.exists() && isFirst) Log.i(TAG, "NOOP")
if (!snapshot.exists() && !isFirst) Log.i(TAG, "REMOVED")
NOOP
एक ऐसा मामला है जो घटना आधारित श्रोताओं में कभी मौजूद नहीं होगा, क्योंकि इसमें उस स्थिति के लिए कोई घटना नहीं होगी।
संबंधित सवाल
नए सवाल
kotlin
कोटलिन एक ओपन-सोर्स है, जो जेटब्रेन द्वारा समर्थित और विकसित की गई स्टेटिकली टाइप्ड प्रोग्रामिंग लैंग्वेज है। कोटलिन OOP और कार्यात्मक सुविधाओं को जोड़ती है और इंटरऑपरेबिलिटी, सुरक्षा, स्पष्टता और टूलींग समर्थन पर केंद्रित है। यह वर्तमान में जेवीएम, जावास्क्रिप्ट और देशी लक्ष्यों को लक्षित करता है, और यह एंड्रॉइड पर आधिकारिक रूप से समर्थित भाषा है।