【Firestore】セキュリティルールの便利な関数たち
get()
指定したパスのドキュメントの情報を取得します。例えばusers
コレクションのhoge
というドキュメントのname
フィールド値を取得したい場合は下記のようになります。
allow read: if get(/databases/$(database)/documents/users/hoge).data.name == 'hoge';
ちなみにパスの情報を変数で動的に変えたい場合は、$(変数)
のようにして変数をエスケープします。
getAfter()
書き込みリクエストが成功した場合のドキュメント情報を取得します。getAfter()
は使い方こそget()
とほとんど変わりありませんが、取得するデータの性質が少し異なります。リクエストが仮に成功した場合のドキュメント情報を取得してくるので、主にwrite
リクエストでの条件指定に使います。
allow create: if get(/databases/$(database)/documents/users/hoge).data.name == 'hoge2';
exists()
指定したパスのドキュメントが存在するかどうかのBool
値を取得します。
allow read: if exists(/databases/$(database)/documents/users/hoge);
ちなみに前述した3つの関数には下記のような制限があり、制限を超えてしまうとアクセス拒否エラーが発生するので注意が必要です。
てな感じで本日は以上になります🍺 後日、セキュリティルール の便利な変数たちをまとめようかと思います。