iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【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つの関数には下記のような制限があり、制限を超えてしまうとアクセス拒否エラーが発生するので注意が必要です。

  • 単一ドキュメントに対するリクエストの場合は10個まで使用可能
  • 複数のドキュメントに対する読み取り、トランザクション、一括書き込みの場合は20個まで使用可能

てな感じで本日は以上になります🍺 後日、セキュリティルール の便利な変数たちをまとめようかと思います。

参考

firebase.google.com

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com