In Cloud Firestore rules - How do I check if a key is null
Looking at the docs - https://firebase.google.com/docs/reference/rules/rules.Map
k in x - Check if key k exists in map x
so this should work (without the keys())
!('assignee' in resource.data)
if you want to make sure a key is null you need to check that this key is not part of the resource keys property:!resource.data.keys().hasAny(['assignee'])
you can also use hasAll
or hasOnly
. more info here
Reading the list comparisons of the Firestore Security rules documentation here, we can see that hasAll
returns true if all values are present in the list.
// Allow read if one list has all items in the other list
allow read: if ['username', 'age'].hasAll(['username', 'age']);
The request.resource.data
is a map containing the fields and values. In order to use hasAll
, we must first get the keys as a list of values as shown here.
!resource.data.keys().hasAll(['assignee'])