2016-02-12 31 views
25

私はparse.comのユーザーです。今は別のサービスを探しています。 ファイアベースにバックエンドロジックを書き込むにはどうしたらいいですか?ファイアベースとバックエンドのロジック

私は、サーバー側ですべての値を検証したり、物事をトリガーしたいとしましょう。私は1つの解決策について考えましたが、推奨される方法を知りたいと思います。

私は特急使用nodejsサーバーを作成

  1. に思います。
  2. ロジックを処理するためのミドルウェアを作成します。ミドルウェア
  3. をトリガアプリから
  4. 送信休止要求は、HTTPリクエストのparamsはに従って値を更新するfirebaseのnodejs SDKを使用します。
  5. と変更

enter image description here

シンプルなその何かに耳を傾けるアプリfirebaseハンドラに実装しますか?私がクラウドコードを使用した解析では、ロジックはクライアント側ではなくサーバー側であることが必要です。

+1

大きな質問!おそらくすでに見てきたように、FirebaseはCloud Codeには直接対応していません(まだ)。私は以下にいくつかのアプローチを記述/リンクしました。何かが明確でない場合は、ちょうどコメントしてください! –

+0

[Rob DodsonがFirebase with Polymerの使い方を説明したこのビデオはまだ見ましたか?](https://youtu.be/1f_Tj_JnStA?t=12m52s)?私はそれが非常に強力な組み合わせだと思う。 https://youtu.be/1f_Tj_JnStA?t=12m52s – Mowzer

答えて

39

アップデート(2017年3月10日)私は以下の概要アーキテクチャがまだ有効であると、既存のインフラストラクチャとFirebaseを組み合わせるために使用することができますが、FirebaseはちょうどCloud Functions for Firebaseをリリースし、Googleの上のJavaScript関数を実行することを可能にしますFirebaseのイベント(データベースの変更、サインインしているユーザーなど)に対応したサーバー


Firebaseアプリケーションの一般的なアーキテクチャはかなりこのブログ記事Where does Firebase fit in your app?で明確に定義されています。

あなたが提案したアーキテクチャはアーキテクチャー3に最も近く、クライアント側のコードはnode.jsサーバーに直接FireBlaster の両方に直接話します。

クライアントとサーバー間のすべてのやりとりがFirebaseを経由するオプション2を検討することを強くお勧めします。このタイプのアーキテクチャの大きな例はFlashlight search integrationです。クライアントは検索クエリをFirebaseデータベースに書き込みます。サーバーは、そのような要求をリッスンし、照会を実行し、応答をデータベースに戻します。クライアントはその応答を待ちます。このサーバーの

簡単な概要は以下のようになります。

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/)が許しているもの)をリクエストとして使うことができますが、あなたのボット/サーバーは、それと何を返すか(もしあれば)。 「無効」とみなされるリクエストを無視して、不正なクライアントを応答待ちのままにすることができます。また、リクエスト/応答プロトコルにエラー処理を組み込み、 "NOPE"タイプの応答を送信することもできます。それはAPIのようなものですが、データベースを公開することを除いては例外です。 –

+0

だからこの場合私はサーバーが必要です。これはsocket.ioをよく使うものではありませんか? 1つのレイヤーを削除してよりシンプルなように思えます。 – Alon

+1

ミドルウェアを好きな人は、たくさんの選択肢があります。 「より良い」とは主観的です。ミドルウェアを使わずにFirebase上でAPIを構築する方法を詳しく説明したかっただけです。現時点では、Firebaseを使用したCloud Codeの最も一般的な代替手段です。 –

2

は、ここで私はどうなるのかです:".validate" rules

  • Validadeすべての入力。それに必要なサーバーはありません。
  • タスクを実行する場合は、Firebase Queueボットを実行してタスクを実行すると完了です。

あなたが最後のいずれかを実行していない場合、あなたは二つの問題があり:あなたはで認証オブジェクトを取得するには少しトリッキーになります投稿ダイアグラムを使用しようとした場合

  • をサーバー(ただし不可能ではありません)。要求を許可するユーザーを検証する必要がない場合は、先に進んでください。

  • 通常のfirebaseアプリだけを使って変更を聞いて応答すると(Frank van Puffelenのサンプルコードのようにオブジェクトを編集する)、スケーラビリティに問題が生じる可能性があります。バックエンドが2つ(またはそれ以上)のインスタンスに拡大されると、firebaseの編集によってすべてのタスクがトリガされます。変更があった気づく各インスタンスは、その後、追加/、一度それぞれ同じタスクを実行し、各たら、レスポンスオブジェクトを交換し、各一回リクエストオブジェクトを削除しよう...

Firebaseキューは、これらの両方を回避使い方問題。

4

今日GoogleはこれがFirebaseにおけるアーキテクチャとバックエンド・ロジックのための優れたソリューションです

Firebase https://firebase.google.com/features/functions/

ため クラウド機能を発表しました。

+0

これを知っていれば今すぐ問題を解決しました私はちょうど1ヶ月後に直面していた、あなたfirebaseチームありがとう! –

+0

唯一のfirebaseを使用して私の電子商取引のウェブサイトをフィルタリングすることができないので、私はこのStackOverflowの質問に来ました。どのように私はそれを達成することができます。いくつかのREST APIを使用している場合plz私は何をすべきか教えてください – George

+0

@Georgeあなたは新しいfirebaseのcloudstoreを使用することができます。しかし、それでも全文検索はできません。私はあなたのウェブサイトで高度な検索機能を有効にするためにalgoliaなどの外部検索エンジンを使用したいと思うかもしれないと思います。 –

関連する問題