完全一致の場合、ブロック内のルールが評価されます。完全一致となるかどうかが確認されます。ルールが評価されます。一致すれば、リクエストは許可されます。一致しない場合、リクエストは拒否されます。宣言では次の変数がサポートされます。{variable})。再帰(マルチセグメント)ワイルドカードは、パスまたはパスの下位にある複数のパスセグメントと一致します。このワイルドカードは設定した場所の下位にあるすべてのパスと一致します。{variable=**})。オブジェクトとして使用できます。ステートメントを含めます。これらが実際のルールです。以上のメソッドに適用できます。評価される必要があります。ステートメントに条件が含まれていない場合、該当するメソッドのリクエストが常に許可されます。ルールのいずれかが一致すると、リクエストは許可されます。ルールがアクセス権を付与し、アクセスを制限する可能性のあるその他の詳細なルールは無視されます。すべてのユーザーが自身の所有するすべてのファイルの読み取りや削除を行える次の例について考えてみましょう。ある場合のみ書き込みを許可します。ない場合でもすべて削除できます。先行するルールでそれが許可されているためです。ステートメントに含まれるメソッドは、同じメソッドの受信リクエストに対してアクセス権を付与します。ブロック内で読み取りメソッドを重複させることはできません。宣言内の書き込みメソッドが競合します。次のルールは失敗します。ルールの複雑化に伴い、一連の条件を関数としてラップし、ルールセット全体で再利用できるようにしたい場合があります。ルールはカスタム関数をサポートしています。ルール関数はドメイン固有の言語で記述され、いくつかの重要な制限があります。ステートメントのみを含めることができます。追加ロジックを含めることはできません。ループの実行や外部サービスの呼び出しはできません。関数は、定義されているスコープから関数と変数に自動的にアクセスできます。組み込み関数にアクセスできます。関数は他の関数を呼び出すことはできますが、再帰はできません。キーワードを使用して変数を定義できます。ステートメントで終了する必要があります。キーワードを使用します。個以上の引数を取ります。つの関数にまとめることができます。割り当ての例をみてみましょう。割り当てステートメントはセミコロンで区切る必要があります。コレクションのルックアップが強制されることにご注意ください。番目の関数を呼び出します。ルールで関数を使用すると、ルールが複雑化した場合に保守しやすくなります。構造を反映するデータベースの場所、リクエストのタイプ、アクセス権を付与する条件があります。データベースの場所ルールの構造はデータベースに保存しているデータの構造に従う必要があります。メッセージを一覧表示するチャットアプリで、次のようなデータがあるとします。}ルールには、上記の構造を反映する必要があります。変数をサポートしています。定数パス名を併用することもできます。つのタイプがあります。write)は、受信リクエストのメソッドに適用されます。ルールは、データ構造を強制してデータの形式と内容を検証します。ユーザーによるデータの読み取りを許可するときに記述します。ユーザーによるデータの書き込みを許可するときに記述します。値の適切な形式、子属性の有無、データ型を定義します。デフォルトでは、該当するパスのアクセスを許可するルールがない場合、アクセスは拒否されます。Firestore条件は、特定のオペレーションを許可するか拒否するかを決定するブール式です。変数によって、条件のコンテキストが提供されます。変数には、以下のフィールドとそれぞれのフィールドに対応する情報が含まれます。Token(JWT)。クレームが含まれます。