2015-03-31 11 views
5

सेट एक Firebase डेटाबेस के लिए एक व्यक्ति के बारे में एक पोस्ट जोड़ने के बाद, मैं उस व्यक्ति के लिए नए पद के संदर्भ में जोड़ना चाहते हैं। हालांकि व्यक्ति पहले से मौजूद हो सकता है या नहीं भी हो सकता है।Firebase अद्यतन या

मेरे पास है:

var ref = new Firebase("https://mydatabase.firebaseio.com/"); 
var _person = document.getElementById("Person").value; 
var _remark = document.getElementById("Remark").value; 

var postsRef = ref.child("remarks"); 
var newPostRef = postsRef.push({ 
    person: _person, 
    remark: _remark 
}); 

var postID = newPostRef.key(); 

var personRef = ref.child("person"); 
personRef.update({ 
    _person: postID 
}); 

हालांकि कि एक नोड बच्चे व्यक्ति के बजाय _person चर के मूल्य में _person कहा जाता है बनाता है। सेट() का उपयोग मौजूदा व्यक्ति को ओवरराइट करेगा।

उदाहरण: पहले एक नोड टिप्पणी/-JlkbxAKpQs50W7r84gf चाइल्ड नोड व्यक्ति के साथ बनाई गई है/123456

उसके बाद मैं एक नोड व्यक्ति/123456 (केवल यदि यह पहले से ही मौजूद नहीं है) बनाने के लिए और से जोड़ना चाहते हैं एक बच्चे नोड टिप्पणी/-JlkbxAKpQs50W7r84gf इसके लिए। बाद आईडी स्वचालित रूप से उत्पन्न होता है (Firebase), लेकिन व्यक्ति की आईडी एक एचटीएमएल रूप से लिया जा रहा है।

कैसे मैं ऐसा क्यों है?

उत्तर

9

update से पहले, आपके डेटा को संरचित करने के तरीके के आधार पर, आप person से पहले संदर्भ प्राप्त कर सकते हैं।

तो, अपने डेटा कुछ इस तरह दिखता है:,

var personRef = ref.child("person").child(_person); 

तो फिर तुम यदि वह मौजूद है देखना चाहता हूँ:

{ 
    "remarks" : { 
        ... 
       }, 

    "person" : { 
       "123456" : { 
           "name" : "foo", 
           ... 
           "blah" : "bar" 
          }, 
       ... 
       } 
} 

और document.getElementById("Person").value आप 123456 देता है आप की तरह संदर्भ प्राप्त कर सकते हैं, और अगर यह होता है, इसे अद्यतन:

personRef.once('value', function(snapshot) { 

    if(snapshot.val() === null) { 
     /* does not exist */ 
    } else { 
     snapshot.ref().update({"postID": postID}); 
    } 

}); 
+0

अपने उपरोक्त उदाहरण में, मेरा मानना ​​है कि 'ref' एक जनसंपर्क है ऑपरेटी, एक विधि नहीं। दूसरे शब्दों में, यह 'snapshot.ref' होना चाहिए 'snapshot.ref()'। मुझे यकीन नहीं है कि यह फ़ायरबेस के नए संस्करणों में बदल गया है, लेकिन मैं हाल ही में इस मुद्दे में भाग गया। – Andi

+0

snapshot.ref() फंक्शन नहीं है, और जड़ संदर्भ पर snaphot.ref बुला अशक्त वापस आ जाएगी – Nandhu

संबंधित मुद्दे