अनिवार्य रूप से समस्या यहाँ आप सुरक्षित रूप से अपने NodeJS सर्वर जो ग्राहक Firebase के रूप में प्रमाणीकृत है को संप्रेषित करने के लिए की जरूरत है। इसके बारे में आप कई तरीकों से जा सकते हैं, लेकिन संभवतः आपके सभी क्लाइंट < -> नोडजेएस संचार फ़ायरबेस के माध्यम से जाना आसान है।
बजाय ग्राहक होने का एक REST एंडपॉइंट अपने NodeJS सर्वर के द्वारा मारा, एक Firebase स्थान है कि आपके NodeJS सर्वर निगरानी है करने के लिए ग्राहक लिखने की है। फिर आप क्लाइंट द्वारा लिखे गए डेटा को सत्यापित करने के लिए फायरबेस सुरक्षा नियमों का उपयोग कर सकते हैं और आपका सर्वर इस पर भरोसा कर सकता है।
उदाहरण के लिए, यदि आप इसे बनाने के लिए इतना प्रयोक्ता (आपके NodeJS सर्वर वास्तव में ईमेल भेजने की देखभाल करने के साथ) अपने अनुप्रयोग के माध्यम से मनमाने ढंग से ईमेल भेज सकते हैं चाहता था, तो आप इस तरह के नियम कुछ के साथ एक/emails_to_send स्थान हो सकता है:
{
"rules": {
"emails_to_send": {
"$id": {
".write": "!data.exists() && newData.child('from').val() == auth.email",
".validate": "newData.hasChildren(['from', 'to', 'subject', 'body'])"
}
}
}
}
तो ग्राहक में आप कर सकते हैं:
ref.child('emails_to_send').push({
from: '[email protected]',
to: '[email protected]',
subject: 'hi',
body: 'Hey, how\'s it going?'
});
और अपने NodeJS कोड में आप अपने Firebase गुप्त के साथ) .auth कह सकते हैं ((ताकि आप पढ़ सकते हैं और सब कुछ लिखने) और फिर कार्य करें:
ref.child('emails_to_send').on('child_added', function(emailSnap) {
var email = emailSnap.val();
sendEmailHelper(email.from, email.to, email.subject, email.body);
// Remove it now that we've processed it.
emailSnap.ref().remove();
});
यह सबसे आसान और साथ ही सबसे सही समाधान होने जा रहा है। उदाहरण के लिए, यदि उपयोगकर्ता फ़ायरबेस के माध्यम से लॉग आउट करता है, तो वे अब फ़ायरबेस को लिखने में सक्षम नहीं होंगे, इसलिए वे अब आपके नोडजेएस सर्वर को ईमेल भेजने में सक्षम नहीं होंगे, जो संभवत: आपके इच्छित व्यवहार की संभावना है। इसका अर्थ यह भी है कि यदि आपका सर्वर अस्थायी रूप से नीचे है, जब आप इसे वापस शुरू करते हैं, तो यह ईमेल भेजकर "पकड़ लेगा" और सब कुछ काम जारी रहेगा।
महान सलाह Thats - धन्यवाद। शायद इस प्रकार की वास्तुकला सलाह को शामिल करने के लिए फायरबेस दस्तावेज़ों का विस्तार किया जा सकता है। – markbarton
अच्छा बिंदु। मैं देखूंगा कि हम क्या कर सकते हैं। :-) –
इस तरह, ईमेल भेजने पर से निपटने त्रुटि Firebase के माध्यम से भी किया जाना चाहिए ... FYI करें – tomericco