🕌
Firestore Ruleで特定のKeyのみのupdateだけを許可する
Firestore ruleで、ひとつのキーだけの更新を許可し、他のキーは更新させたくない場合があったのでそのRuleの書き方について、メモとして残しておきます。
MapDiffを使う
下記の例では、 message
や color
の変更は許可したくないが、 likes_count
だけの更新を許可したい場合があると思います。
{
message: "test",
color: "color",
image_url: "url",
created_at: "aaa",
likes_count: 1 ← ここの更新だけを許可したい。
}
その場合のRuleはこう書きます。
allow update: if request.resource.data.diff(resource.data).changedKeys().hasAny(['likes_count']) || request.resource.data.diff(resource.data).addedKeys().hasAny(['likes_count'])
以上です。
参考
Discussion