firebase - फायरस्टार संदर्भ डेटा प्रकार किसके लिए अच्छा है?




google-cloud-firestore (2)

फायरस्टार में संदर्भों का उपयोग करके मेरे लिए जो काम किया गया है उसे नीचे जोड़ना।

जैसा कि अन्य उत्तर कहते हैं, यह एक विदेशी कुंजी की तरह है। संदर्भ विशेषता संदर्भ डॉक्टर के डेटा को वापस नहीं करती है। उदाहरण के लिए, मेरे पास उत्पादों की एक सूची है, उत्पाद पर विशेषताओं में से एक के रूप में एक उपयोगकर्ता संदर्भ के साथ। उत्पादों की सूची प्राप्त करना, मुझे उस उत्पाद को बनाने वाले उपयोगकर्ता का संदर्भ देता है। लेकिन यह मुझे उस संदर्भ में उपयोगकर्ता का विवरण नहीं देता है। मैंने पॉइंटर्स के साथ अन्य बैक एंड की सेवाओं का उपयोग किया है, इससे पहले कि "पॉप्युलेट: ट्रू" फ़्लैग हो, जो उपयोगकर्ता के संदर्भ आईडी के बजाय उपयोगकर्ता का विवरण देता है, जो यहाँ होना बहुत अच्छा होगा (उम्मीद है कि भविष्य में सुधार होगा )।

नीचे कुछ उदाहरण कोड हैं जो मैंने संदर्भ सेट करने के साथ-साथ उत्पादों की सूची का संग्रह प्राप्त करने के लिए उपयोग किए थे, फिर दिए गए उपयोगकर्ता संदर्भ आईडी से उपयोगकर्ता विवरण प्राप्त करें।

एक संग्रह पर एक संदर्भ सेट करें:

let data = {
  name: 'productName',
  size: 'medium',
  userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);

प्रत्येक दस्तावेज़ (उपयोगकर्ता विवरण) पर एक संग्रह (उत्पाद) और सभी संदर्भ प्राप्त करें:

db.collection('products').get()
    .then(res => {
      vm.mainListItems = [];
      res.forEach(doc => {
        let newItem = doc.data();
        newItem.id = doc.id;
        if (newItem.userRef) {
          newItem.userRef.get()
          .then(res => { 
            newItem.userData = res.data() 
            vm.mainListItems.push(newItem);
          })
          .catch(err => console.error(err));
        } else {
          vm.mainListItems.push(newItem);  
        }

      });
    })
    .catch(err => { console.error(err) });

उम्मीद है की यह मदद करेगा

मैं सिर्फ नया फायरबेस फायरस्टार खोज रहा हूं और इसमें एक डेटा प्रकार है जिसे reference कहा जाता है। यह मेरे लिए स्पष्ट नहीं है कि यह क्या करता है।

  • क्या यह विदेशी कुंजी जैसा है?
  • क्या इसका उपयोग उस संग्रह को इंगित करने के लिए किया जा सकता है जो कहीं और स्थित है?
  • यदि reference एक वास्तविक संदर्भ है, तो क्या मैं इसे प्रश्नों के लिए उपयोग कर सकता हूं? उदाहरण के लिए क्या मेरे पास एक संदर्भ हो सकता है जो उपयोगकर्ता को सीधे पाठ फ़ील्ड में स्टोर करने के बजाय उपयोगकर्ता को इंगित करता है? और क्या मैं इस उपयोगकर्ता संदर्भ को क्वेरी के लिए उपयोग कर सकता हूं?

संदर्भ द्वारा क्वेरी करने के लिए एक जावास्क्रिप्ट समाधान की तलाश करने वालों के लिए - अवधारणा यह है कि, आपको क्वेरी कथन में 'दस्तावेज़ संदर्भ' ऑब्जेक्ट का उपयोग करने की आवश्यकता है

teamDbRef = db.collection('teams').doc('CnbasS9cZQ2SfvGY2r3b'); /* CnbasS9cZQ2SfvGY2r3b being the collection ID */
//
//
db.collection("squad").where('team', '==', teamDbRef).get().then((querySnapshot) => {
  //
}).catch(function(error) {
  //
});

(यहां जवाब के लिए कुडो: https://.com/a/53141199/1487867 )