खोज…


यूजर प्रोफाइल डाटा को कैसे बचाएं

प्रत्येक प्रमाणित उपयोगकर्ता के पास एक Firebase uid जो सभी प्रदाताओं के लिए विशिष्ट होता है और प्रत्येक प्रमाणीकरण पद्धति के परिणाम में वापस आ जाता है।

अपने उपयोगकर्ता के डेटा को संग्रहीत करने का एक अच्छा तरीका सभी उपयोगकर्ताओं के डेटा को रखने के लिए एक नोड बनाना है और अपने सुरक्षा नियमों का उपयोग करके इसे संरक्षित करना है

- डेटाबेस

{
   "users": {
      "uid1" : {
         "name": "Steve",
         "surname": "Jobs"
      },
      "uid2" : {
         "name": "Bill",
         "surname": "Gates"
      }
   }
}

- सुरक्षा

{
    "rules": {
        "users": {
            "$uid": {
                // If node's key matches the id of the auth user
                ".write": "$uid == auth.uid"
            }
        }
    }
}

उपरोक्त नियमों में $uid एक तथाकथित "डॉलर वैरिएबल" है, जो यह सुनिश्चित करता है कि इसके तहत नियम users सभी चाइल्ड नोड्स पर लागू हों। अधिक जानकारी के लिए पथ सेगमेंट कैप्चर करने के लिए $ चर का उपयोग करने पर प्रलेखन देखें।

डेटाबेस में उपयोगकर्ता डेटा क्यों बचाते हैं

फायरबेस प्रमाणीकरण आपके ऐप के उपयोगकर्ताओं को सामाजिक प्रदाताओं या उनके ईमेल + पासवर्ड के साथ साइन-इन करने की अनुमति देता है। लेकिन क्या होगा यदि आप किसी उपयोगकर्ता के बारे में अतिरिक्त जानकारी संग्रहीत करना चाहते हैं, इससे परे फायरबेस प्रमाणीकरण क्या आपको निर्दिष्ट करने की अनुमति देता है?

या क्या होगा यदि आप अपने ऐप में उपयोगकर्ताओं की सूची प्रदर्शित करना चाहते हैं? फायरबेस प्रमाणीकरण के पास इसके लिए एपीआई नहीं है।

अधिकांश डेवलपर्स एक अलग डेटाबेस में अतिरिक्त जानकारी संग्रहीत करके इस समस्या को हल करते हैं। यह विषय कवर करता है कि इस तरह की जानकारी को फायरबेस रियलटाइम डेटाबेस में कैसे स्टोर किया जाए।

रीयलटाइम डेटाबेस में उपयोगकर्ता खाता डेटा को संभालना

Firebase प्रमाणन प्रणाली एक उपयोगकर्ता का स्रोत है uid , displayName , photoURL , और शायद email । पासवर्ड आधारित खाते इन स्थिर मूल्यों को .updateProfile पद्धति के माध्यम से किसी .updateProfile सिस्टम में सेट करते हैं। रीयलटाइम डेटाबेस, आरडीबी में इन मूल्यों को संग्रहीत करते हुए, users नोड बासी डेटा के मुद्दे को प्रस्तुत करता है। उदाहरण के लिए, प्रदर्शन नाम बदल सकते हैं। सिंक में इन मूल्यों को रखने के लिए .onAuthStateChange साथ कॉन्सर्ट में स्थानीय भंडारण का उपयोग करें।

हर .onAuthStateChange

  • getItem('displayName') और getItem('photoURL')
  • user.displayName और user.photoURL तुलना करें
  • यदि अलग हो तो
    • setItem('displayName') और setItem('photoURL')
    • db.ref.child('users').update के मूल्यों displayName और / या photoURL

.onAuthStateChange हर पेज लोड या पुनः लोड होने के साथ-साथ हर स्थिति में परिवर्तन पर आग लगाता है। यह संभावित रूप से अक्सर फायर करता है, जैसे मल्टी पेज एप्स। हालांकि स्थानीय भंडारण के लिए पढ़ना और लिखना समकालिक और बहुत तेज़ है, इसलिए ऐप के प्रदर्शन पर कोई ध्यान देने योग्य प्रभाव नहीं होगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow