Я пытаюсь реализовать правило безопасности Firestore, которое проверяет все записи, сделанные при создании внутри карты. Однако у меня проблема в том, что я не знаю ключи от карты. У меня есть что-то вроде этого:
{
"name": "Tom",
"answers": {
"SomeUUID": {
"answer": "Alps",
"right": true
},
"AnotherUUID": {
"answer": "Mount Everest",
"right": false
}
}
}
Чтобы проверить записи с правилами безопасности, я бы сделал что-то вроде этого
rules_version = "2"
service cloud.firestore {
match /databases/{database}/documents {
match /answers/{answerID} {
allow read;
allow create: request.resource.data.name is string && request.resource.data.answers is map
}
}
Как я могу дополнительно проверить содержимое карты участников, не зная, размер карты или ключи? Есть ли подстановочный знак, который я мог бы использовать для ключей? Значение для каждого созданного ключа должно быть одинаковым. Я хотел бы сделать что-то вроде этого:
allow create: request.resource.data.name is string && request.resource.data.answers &&
request.resource.data.member.$(wildcard).keys().size() == 2 && request.resource.data.member.$(wildcard).answer is string && request.resource.data.member.$(wildcard).right is bool
Возможно ли это или мне нужно изменить весь лог c? Есть ли шанс, что подстановочный знак доступен?