2012-06-18 12 views
5

Firebase के साथ आज थोड़ा अधिक प्रोग्रामिंग करने में, मैं अपने आप को सुविधाओं की एक जोड़ी के लिए बधाई देने के लिए मिल गया।क्या फ़ायरबेस में 'मर्ज' या 'बैच' सेटिंग जैसी कुछ है (या माना गया है)?</p> <p>1) <strong>मर्ज</strong> सेट:</p> <p>मैं एक firebase <code>ref</code> मूल्य <code>{a:1,b:2,c:3}</code> है कि है कहो

यदि मैं ref.set({a:-1,b:-2}) जैसा कुछ करता हूं तो नया मान (असुरक्षित रूप से) {a:-1,b:-2} होगा।

इसके बजाय, ref.mergeSet({a:-1,b:-2}) कल्पना करें जिसके परिणामस्वरूप {a:-1,b:-2,c:3} रेफरी का मूल्य होगा।

अब, मुझे पता है मैं ref.child("a").set(-1) और ref.child("b").set(-2) की तरह कुछ कर सकता है कि इस परिणाम प्राप्त करने के लिए, लेकिन कम से कम कुछ मामलों में, मैं अपने .on() हैंडलर के लिए केवल एक ही कॉल प्राप्त करना पसंद करते हैं।

यह मेरे दूसरे विचार में segues।

2) बैच सेट:

अपने आवेदन में मैं केवल अन्य क्लाइंट में .on करने के लिए एक कॉल में परिणाम की .set के लिए कॉल के एक मनमाना संख्या के लिए मजबूर करने के लिए एक रास्ता चाहते हैं। कुछ की तरह:

ref.startBatch() 
ref.child("a").set(1) 
ref.child("b").set(2) 
.... 
ref.endBatch() 

बैच मोड में, .set.on के लिए एक कॉल में परिणाम नहीं होगा, बजाय, .on के लिए कॉल की न्यूनतम संख्या .endBatch कॉल करने से सभी परिणाम होगा।


मैं आसानी से स्वीकार करते हैं कि इन विचारों को बहुत नवजात रहे हैं, और मैं हैरान अगर वे Firebase की मौजूदा स्थापत्य कला के कुछ के साथ संघर्ष नहीं होगा, लेकिन मैंने सोचा कि मैं उन्हें वैसे भी साझा करते हैं। मुझे लगता है कि मुझे फ़ायरबेस का उपयोग करते समय ग्राहकों में स्थिरता सुनिश्चित करने में अधिक समय बिताना पड़ रहा है।

फिर से धन्यवाद, और महान काम जारी रखें।

उत्तर

6

अद्यतन: हम REST API है, जबकि अन्य भाई बहनों असंशोधित छोड़ने जो, आप atomically किसी विशेष स्थान पर एक से अधिक भाई बहन संशोधित करने की अनुमति के लिए एक नया update() Firebase वेब ग्राहक और पैच समर्थन करने के लिए विधि जोड़ दिया है।

ref.update({a: -1, b: -2}); 

जो 'एक' और 'बी' अपडेट करेगा, लेकिन 'सी' असंशोधित छोड़: आप इसका रूप में "mergeSet" वर्णित है और इस्तेमाल किया जा सकता इस प्रकार है।


पुराने उत्तर

विस्तृत सुविधा का अनुरोध के लिए धन्यवाद! हम आपके उपयोग के मामले के बारे में अधिक जानना पसंद करेंगे और ये प्राइमेटिव आपकी मदद कैसे करेंगे। यदि आप अधिक जानकारी साझा करने के इच्छुक हैं, तो [email protected] ईमेल करें और हम आपके परिदृश्य में खोद सकते हैं।

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

कुछ मामलों में, आप अपने पेड़ को पुनर्गठित करके लगभग वही हासिल कर सकते हैं जो आप चाहते हैं। उदाहरण के लिए, यदि आप जानते हैं कि आप हमेशा 'ए' और 'बी' को एक साथ सेट करना चाहते हैं, तो आप उन्हें एक सामान्य 'एबी' माता-पिता के तहत रख सकते हैं और ref.child('ab').set({a:-1, b:-2}); कर सकते हैं, जो 'सी' बच्चे को प्रभावित नहीं करेगा।

जैसा मैंने कहा, हम आपके परिदृश्य के बारे में अधिक जानना पसंद करेंगे। हम बीटा में हैं ताकि हम डेवलपर्स से सीख सकें कि वे एपीआई का उपयोग कैसे कर रहे हैं और यह कहां कम हो रहा है! [email protected] :-)

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