Firestoreで数値の範囲を制限するセキュリティルール
Firestoreのセキュリティルールで数値の範囲を制限することができます。悪意のあるユーザにより思わぬ値を登録されてしまい、誤動作を起こすことを防げます。
フィールドの大小比較を使う
数値の範囲を指定するには、フィールドの値を大小比較します。 例えば、"age"(年齢)フィールドを18以上65以下に制限するには以下のように記述します。
allow create, update: if request.resource.data.age >= 18 &&
request.resource.data.age <= 65
数値の範囲の使用例
例として参加登録フォームを作ってみます。

データ構造はこのようになっています。

年齢を必須かつ18以上65以下という条件を、セキュリティルールで書くとこのようになります。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /applications/{application} {
function validApplication(docData) {
return docData.age is int &&
docData.age >= 18 &&
docData.age <= 65;
}
allow create, update: if validApplication(request.resource.data)
}
}
}
18歳で登録してみます。

Firebaseのコンソールで確認すると登録されていることが分かります。

-(マイナス)30歳で登録してみると、エラーになり、コンソールを確認すると登録されていないことが分かります。


以上でFirestoreのセキュリティルールで数値の範囲を制限することができました。