2016-07-20 36 views
0

FirebaseでWebアプリケーションを作成します。問題は、私はまだいくつかのことがうまくいくかどうか不明です。ノードにFirebaseを追加する場所

最終的には、電子メールなどを送信するためのサーバー(ノードにあります)が必要になります。私の最大の質問の一つは、Firebaseが実際に必要とされるところです。もう少し詳しく説明しよう!

私はドキュメント( here)であなたがノードに次のコードを追加して、サーバーにFirebaseを追加できることがわかり

var firebase = require("firebase"); 

firebase.initializeApp({ 
    serviceAccount: "path/to/serviceAccountCredentials.json", 
    databaseURL: "https://databaseName.firebaseio.com" 
}); 

しかし、あなたはまた、次のコードで直接ブラウザにFirebaseを追加することができます。

<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script> 
<script> 
    // Initialize Firebase 
    // TODO: Replace with your project's customized code snippet 
    var config = { 
    apiKey: "apiKey", 
    authDomain: "projectId.firebaseapp.com", 
    databaseURL: "https://databaseName.firebaseio.com", 
    storageBucket: "bucket.appspot.com", 
    }; 
    firebase.initializeApp(config); 
</script> 

私の質問は上記のいずれかの状況になりますか?ブラウザにFirebaseをいつ追加すればいいですか?Firebaseをいつサーバーに追加しますか?両方の用途は何を提供していますか?

たとえば、Firebaseに接続せずにサーバからRealtime Databaseにアクセスできますか? Firebaseをサーバーに追加したら、ブラウザにもう一度追加する必要がありますか?説明してください、ありがとう!

答えて

1

あなたはすでに質問の答えのほとんどを持っています。

ウェブアプリのユーザーがメールを送信できるようにしたいとします。あなたが言っているように、そうでなければあなたのユーザーの電子メールクライアントに頼らざるを得ないので、あなたは通常あなたのサーバーからそれをしたいと思うでしょう。

しかし、電子メールを送信するのはnode.jsサーバーでも、いつ、どこで電子メールを送信するのかは、Webアプリケーションのユーザーによって決まります。したがって、ユーザーはnode.jsスクリプトと対話する方法を必要とします。

ユーザーは簡単にnode.jsサーバーに直接話すことができます。いくつかのexpress.jsエンドポイントを設定し、あなたはビジネスに参加しています。しかし、node.jsサーバにセキュリティを設定し、node.jsスクリプトが処理できるものより多くの電子メール要求をユーザが送信しているケースを処理できるようにする必要があります。電子メールを送信することでやります。

このシナリオを処理する別の方法は、WebクライアントがFirebaseデータベースに「電子メール要求」を書き込むようにすることです。

ref.child('outbox').push({ 
    to: '[email protected]', 
    subject: 'nice answer!', 
    body: '...' 
}) 

あなたのWebクライアントが完了し、ユーザは続行できます。

あなたは(あなたが持っている第二のスニペットと)Firebaseクライアントを含めると電子メールリクエストが来るのを待って、同じデータベースに接続するのNode.jsサーバーで

ref.child('outbox').on('child_added', function(snapshot) { 
    var msg = snapshot.val(); 
    sendEmailTo(msg.to, msg.subject, msg.body).then(function(error) { 
    // if the message was sent, delete it from the queue 
    if (!error) snapshot.ref.remove(); 
    }); 
}) 

このアプローチが覆われています。私たちの古典ではblog post on Firebase application architecturesパターン2として。

+0

こんにちは、私はあなたのような別の投稿で読んでいた!私の最大の疑問は、Realtime DatabaseにアクセスできるようにFirebaseをサーバに追加するだけでよいのでしょうか?私のサーバーにFirebaseを追加すると、他にどのような用途がありますか?また、サーバーにFirebaseを追加すると、各HTMLページのヘッダーにもう一度追加する必要がありますか? –

関連する問題