2016-02-12 14 views
25

मैं parse.com उपयोगकर्ता हूं, और अब मैं एक और सेवा की तलाश में हूं। मैं फायरबेस में एंड एंड लॉजिक कैसे लिख सकता हूं?फायरबेस और बैकएंड तर्क

मान लें कि मैं सर्वर के सभी मूल्यों को मान्य करना चाहता हूं, या चीजों को ट्रिगर करना चाहता हूं। मैंने एक समाधान के बारे में सोचा, लेकिन मैं अनुशंसित तरीके से जानना चाहता हूं।

मुझे लगता है कि

  1. को NodeJS सर्वर एक्सप्रेस का उपयोग करता है बनाएँ।
  2. तर्क को संभालने के लिए मध्यवर्ती बनाएं।
  3. ऐप से बाकी अनुरोध भेजें, जो कि मध्यवर्ती
  4. http अनुरोध के पैराम के अनुसार मानों को अद्यतन करने के लिए फायरबेस के नोडजेएस एसडीके का उपयोग करता है।
  5. और एप्लिकेशन firebase हैंडलर कि परिवर्तन

enter image description here

उनके कुछ सरल करने के लिए सुनो पर लागू? पार्स में मैंने क्लाउड कोड का उपयोग किया, मैं चाहता हूं कि तर्क क्लाइंट साइड पर नहीं बल्कि सर्वर की तरफ होगा।

+1

महान सवाल! जैसा कि आप शायद पहले ही देख चुके हैं, फायरबेस के पास क्लाउड कोड (अभी तक) के लिए प्रत्यक्ष समकक्ष नहीं है। मैंने नीचे कुछ दृष्टिकोणों का वर्णन/लिंक किया है। अगर कुछ स्पष्ट नहीं है तो बस टिप्पणी करें! –

+0

[क्या आपने अभी तक रोब डोडसन के इस वीडियो को समझाया है कि पॉलिमर के साथ फायरबेस का उपयोग कैसे करें] (https://youtu.be/1f_Tj_JnStA?t=12m52s)? मुझे लगता है कि यह एक बहुत ही शक्तिशाली संयोजन है। https://youtu.be/1f_Tj_JnStA?t=12m52s – Mowzer

उत्तर

39

अद्यतन (10 मार्च, 2017): वास्तुकला मैं नीचे रूपरेखा अभी भी मान्य है और किसी भी मौजूदा बुनियादी ढांचे, Firebase सिर्फ Cloud Functions for Firebase जारी किया गया है, जो आप पर JavaScript कार्यों को चलाने के लिए अनुमति देता है के साथ Firebase गठबंधन करने के लिए इस्तेमाल किया जा सकता है गूगल की फ़ायरबेस घटनाओं के जवाब में सर्वर (जैसे डेटाबेस परिवर्तन, उपयोगकर्ता साइन इन करने और बहुत कुछ)।


Firebase आवेदनों की आम आर्किटेक्चर इस ब्लॉग पोस्ट Where does Firebase fit in your app? में बहुत अच्छी तरह से परिभाषित कर रहे हैं।

वास्तुकला आप का प्रस्ताव वास्तुकला 3, जहाँ आपके क्लाइंट-साइड कोड में बात करती है दोनों सीधे और अपने Node.js सर्वर से सीधे firebase करने के सबसे करीब है।

मैं भी अत्यधिक अनुशंसा करता हूं कि आप विकल्प 2 पर विचार करें, जहां क्लाइंट और सर्वर के बीच सभी बातचीत फायरबेस के माध्यम से चलती है। इस प्रकार के आर्किटेक्चर का एक शानदार उदाहरण Flashlight search integration है। ग्राहक फ़ायरबेस डेटाबेस में अपने खोज प्रश्न लिखते हैं। सर्वर ऐसे अनुरोधों के लिए सुनता है, क्वेरी निष्पादित करता है और प्रतिक्रिया को डेटाबेस में वापस लिखता है। ग्राहक उस प्रतिक्रिया के लिए इंतजार कर रहा है।

इस सर्वर के लिए एक सरल रूपरेखा हो सकता है:

var ref = new Firebase('https://yours.firebaseio.com/searches'); 
ref.child('requests').on('child_added', function(requestSnapshot) { 

    // TODO: execute your operation for the request 

    var responseRef = ref.child('responses').child(requestSnapshot.key()); 
    responseRef.set(result, function(error) { 
     if (!error) { 
      // remove the request, since we've handled it 
      requestSnapshot.ref().remove(); 
     } 
    }); 
}) 
यह पिछले दृष्टिकोण ग्राहक कभी नहीं सीधे अपने सर्वर है, जो संभावित समस्याओं के बारे में आप चिंता करने की ज़रूरत है कि सभी तरह निकाल देता से बात के साथ

। इस कारण से मैं कभी-कभी सर्वर के बजाए उन्हें "बॉट्स" के रूप में संदर्भित करता हूं।

+1

यह एक कतार प्रणाली है। तो क्लाइंट जो चाहें वह कर सकता है (ठीक है: जो भी आपका [सुरक्षा + सत्यापन नियम] (https://www.firebase.com/docs/security/guide/) अनुमति के रूप में), लेकिन आपका बॉट/सर्वर निर्धारित करता है कि क्या करना है इसके साथ करो और क्या प्रतिक्रिया देना है (यदि कोई है)। यह केवल उन अनुरोधों को अनदेखा कर सकता है जो इसे "अमान्य" मानते हैं और नकली ग्राहक को प्रतिक्रिया के लिए प्रतीक्षा करते हैं। आप अनुरोध/प्रतिक्रिया प्रोटोकॉल में त्रुटि प्रबंधन भी बना सकते हैं, और "एनओपीई" प्रकार प्रतिक्रिया भेज सकते हैं। यह सिर्फ एक एपीआई की तरह है, सिवाय इसके कि आप इसे खोलने के लिए हमारे डेटाबेस का उपयोग करते हैं। –

+0

तो इस मामले में मुझे सर्वर की आवश्यकता है। यह socket.io बेहतर उपयोग नहीं है? ऐसा लगता है कि मुझे एक परत और अधिक सरल हटाने की तरह लगता है। – Alon

+1

यदि आप मिडलवेयर करना पसंद करते हैं, तो बहुत सारे विकल्प हैं। "बेहतर" क्या है व्यक्तिपरक है। मैं बस विस्तार करना चाहता था कि आप फायरबेस पर एपीआई कैसे बना सकते हैं, मिडलवेयर किए बिना। इस समय फ्लैशबेस के साथ क्लाउड कोड का यह सबसे अधिक इस्तेमाल किया जाने वाला विकल्प है। –

2

यहाँ मैं क्या कर सकता है:

  • Validade सभी ".validate" rules साथ आदानों। इसके लिए कोई सर्वर की आवश्यकता नहीं है।
  • यदि आपके पास चलाने के लिए कार्य हैं, तो Firebase Queue का उपयोग करें, कार्यों को चलाने के लिए एक बॉट का उपयोग करें और आप कर चुके हैं।

    • आप चित्र आप पोस्ट का उपयोग करने की कोशिश अगर यह अधिकृत वस्तु प्राप्त करने के लिए एक छोटे से मुश्किल हो जाएगा:

    आपने पिछले एक ऐसा नहीं करते हैं, तो आप दो समस्याएं हो सकती हैं सर्वर (लेकिन असंभव नहीं)। यदि आपको अनुरोध की अनुमति देने के लिए उपयोगकर्ता को सत्यापित करने की आवश्यकता नहीं है तो आगे बढ़ें।

  • यदि आप परिवर्तनों को सुनने और प्रतिक्रिया देने के लिए नियमित रूप से नियमित फ़ायरबेस ऐप का उपयोग करते हैं (उदाहरण के लिए ऑब्जेक्ट को संपादित करना, जैसे फ्रैंक वैन पफेलन का उदाहरण कोड), तो आपके पास स्केलेबिलिटी समस्या हो सकती है। एक बार जब आपका बैक एंड दो (या अधिक) उदाहरणों के लिए स्केल करता है, तो फ़ायरबेस संपादन उन सभी पर कार्य को ट्रिगर करेगा। प्रत्येक मौका में परिवर्तन किया गया देखेंगे, तो, एक बार एक ही काम चलाने को जोड़ने/प्रत्येक एक बार प्रतिक्रिया ऑब्जेक्ट की जगह और हर एक बार अनुरोध वस्तु को निकालने का प्रयास ..

का उपयोग Firebase कतार इन दोनों से बचा जाता है समस्या का।

4

आज गूगल Firebase https://firebase.google.com/features/functions/

इस आर्किटेक्चर और Firebase में वापस अंत तर्क के लिए एक महान समाधान है के लिए बादल कार्य की घोषणा की।

+0

मुझे यह पता होना चाहिए और अब यह मेरी समस्या हल कर चुका है कि मैं सिर्फ एक महीने पहले सामना कर रहा था, धन्यवाद फायरबेस टीम! –

+0

मैं इस स्टैक ओवरफ्लो प्रश्न पर आया क्योंकि मैं केवल ई-कॉमर्स वेबसाइट को केवल फायरबेस का उपयोग नहीं कर सकता। मैं इसे कैसे प्राप्त कर सकता हूं। अगर मैं कुछ आरईएसटी एपीआई का उपयोग करता हूं तो क्या आप मुझे मार्गदर्शन कर सकते हैं मुझे क्या करना चाहिए – George

+0

@ जॉर्ज आप नए फायरबेस क्लाउडस्टोर का उपयोग कर सकते हैं। लेकिन फिर भी, आप एक पूर्ण पाठ खोज नहीं कर सकते हैं। मुझे लगता है कि आप अपनी वेबसाइट में एक उन्नत खोज सुविधा को सक्षम करने के लिए बाहरी खोज इंजन जैसे अल्गोलिया का उपयोग करना चाहेंगे। –