1

サーバー側のカスタム操作:Firebase:サーバー側のロジックとリアルタイムデータベースの制限クラウドコードを解析するために同等の

解析がcloud codeを書くための可能性があります。私の理解から、Firebaseはコンソール上でこれを行うためのツールを提供していません。

これを行う唯一の方法は、Firebase APIを使用してWebサービスを実装し、ノードの変更を監視し、自分のサーバーにクラウドコードを実装することです。

  • A - これは間違いありませんか?

サーバー側のルール:Firebaseの

legacy documentation /書き込みだけでなく、検証を読み取ることができるユーザーを決めるに限定されているように見えるのルールを説明しています。

{ 
"rules": { 
    "foo": { 
     // /foo/ is readable by the world 
     ".read": true, 
     // /foo/ is writable by the world 
     ".write": true, 
     // data written to /foo/ must be a string less than 100 characters 
     ".validate": "newData.isString() && newData.val().length < 100" 
    } 
} } 

オンパッセージでは、ルールの複雑さが大きくなります。プログラマは、カスタム操作を実行するための関数を作成することができます。

私はFirebaseにこの複雑さを持っていない理由は、おそらく、ノードベースのデータベースは、テーブルベースのものよりも複雑であり、それということであることを想像:Firebaseをそのままに設計された理由を理解

開発者がweb-apiとカスタムサーバーアプリケーションを使用してこれを完全に制御できる場合は、より良いでしょう。

  • B - これは正しいですか?

リアルタイムデータベースの制限: Firebaseのようなリアルタイムのデータベースを使用して主な制限は、私には思える

そのデータは2ウェイの冗長性のイベントが含まれている場合は、いくつかのリアルタイムデータをフェッチしたら1つのノードでトリガされたノードは、冗長な情報を含むノードに伝播されません。

など。ユーザーノードにキーid(ユーザーノードの同じレベルにある別のノードのID)があり、キーリストが変更されているかどうかを検出するために、ユーザーがテーブルビューにあるキーの一覧を表示すると、 (ユーザーノードの変更だけでなく)キーノードの変更を聴くことができます。

- C:これは間違いありませんか?

+2

A)はい、多分。はい、サーバーサイドロジック(コードワイズ)はありません。たぶん、それはあなたがしようとしていることに依存します。方向を示すためにはさらに多くの情報が必要です。 B)Firebaseルールは非常に柔軟です。ルールは、誰がデータにアクセスできるか、読み取り/書き込みアクセス、どのような種類のデータ、データの種類、データの場所などを制限する可能性があります。あなたの例では、鍵ノードをユーザノードとは別のノードとして用意し、ユーザに/ keys/nodeを観察させるべきでしょう。 – Jay

+0

こんにちはジェイ、返信いただきありがとうございます。私はいくつかの詳細を追加しました。 Cについては、適切なUXを作成するためにプログラマが変更を遵守していることに頼っていますが、これは正しいですか?たとえば、プログラマとしては、違いを捕捉するために値とすべての依存関係を観察する必要があります(これはデータの冗長性によるものです)。 – mm24

+0

A)Firebaseサーバにコードがありません。ユースケースを提供できますか? C)データは必ずしも冗長である必要はありませんが、それは可能です。関心のある特定のデータの変更を観察するだけで済みます。各ユーザーの/ usersノードと/ favorite_foodノードがあるとします。あなたのUIがユーザーのリストを表示していて、そのうちの1人がお気に入りの食べ物を変える場合、あなたは本当に気にしません - ユーザーのリストに興味があります。つまり、/ favorite_foodノードではなく/ usersノードを観察します。あなたはそれを扱いやすくするためのユースケースを持っていますか? – Jay

答えて

2

質問は、使用例がないので曖昧ですが、コメントに基づいて、ここに行きます。

A)はい、多分。 はい、サーバー側ロジック(コードワイズ)はありません。 多分、あなたがしようとしていることに依存します。

B)Firebaseルールは非常に柔軟です。ルールは、誰がデータにアクセスできるか、読み取り/書き込みアクセス、どのような種類のデータ、データの種類、データの場所などを制限する可能性があります。これは、データを検証、検証、保存する別の方法です。

FYI:Parse wasは、文書ベースのNoSQLデータベース(テーブルベースではありません)であるMongoDBによってサポートされています。バックエンドでは、ParseデータはFirebaseと同様の方法で保存されていました。 (実際はBSONです)。フロントエンドの実装は、JSON構造を包んでいるオブジェクトで、Firebaseよりもテーブルのような感じで、PFオブジェクト間の関係を直接的に持つようになりました。

C)いいえ。ノードの変更を確認できます。あなたの例では、キーノードを/ userノードとは別のノードとして設定し、ユーザーに/ keysノードを観察させるべきでしょう。

これを少し拡張すると、必ずしもデータが冗長である必要はありませんが、それは可能です。関心のある特定のデータの変更を観察する必要があります。

各ユーザーの/ usersノードと/ favorite_foodノードがあるとします。あなたのUIがユーザーのリストを表示していて、そのうちの1人がお気に入りの食べ物を変える場合、あなたは本当に気にしません - ユーザーのリストに興味があります。つまり、/ favorite_foodノードではなく/ usersノードを観察します。

+0

私は2つのデータベースの違いを理解しようとしています。特定のユースケースを考慮していません。値を変更したときにクラウドコードを使用して別のノード/テーブルを更新し、値の変更の概要を簡単に作成できます。 – mm24

+1

@ mm24ええ、私は完全に理解しています。私は数年前にParseから始めました。私の脳をFirebaseの周りに包み込むのにはしばらく時間がかかりました。あなたのコメントの例では、クライアントがノード内の値を変更したときにクラウドコードを必要とせず、そのノードが新しく更新されたデータでその変更のイベントを自動的に受け取ることを観察している他のクライアント。そのステートメントの本質は、Firebaseがあなたのためにイベントを処理するということです。しかし、データをそこに置く必要があります。 – Jay

+1

@ mm24フォローアップの考えとして、この問題は、タスクを自動化する際にFirebaseで問題になります。毎朝午前2時に、前日のすべての投稿を削除してください。それは、サーバー側で行う必要があります - 裏返して、データがちょうどそこに座っている場合、誰が気に!削除された時点で重要なことではなく、クライアントアプリケーションが接続するたびにそれを行うことができます。 – Jay

関連する問題