Я пытаюсь написать правило безопасности, которое позволяет добавлять значения только определенного типа.
Это то, что у меня сейчас:
allow update if
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.sessionID == key2
// THIS CHECKS IF THE USER IS ALLOWED TO UPDATE THIS DOCUMENT
&& request.resource.data.description is string
&& request.resource.data.endMo is number
&& request.resource.data.startMo is number
&& request.resource.data.openMO is bool
&& request.resource.data.pdf is string
&& request.resource.data.Adress == resource.data.Adress //USER can't update this field
&& request.resource.data.size() <= 40;
Это работает, если все поля уже заполнено.
СИТУАЦИЯ 1 -> РАБОТЫ
оригинал сделать c
{
'description': 'helloworld',
'endMo': 12,
'startMo': 6,
'openMo': true,
'pdf': 'url',
'adress': 'myAdress',
}
db.collection("myCol").doc("myDoc").update({
'description': 'helloworld2',
}
СИТУАЦИЯ 2 -> НЕ РАБОТАЕТ
оригинал do c
{
'adress': 'myAdress',
}
db.collection("myCol").doc("myDoc").update({
'description': 'helloWorld',
}
Почему правило не допускает добавление значений и только обновление уже существующих значений?