Правила безопасности Firestore - Как разрешить только определенные поля на карте внутри карты - PullRequest
0 голосов
/ 17 октября 2019

У меня есть документ с именем «список», который содержит поле с именем «список», который представляет собой карту, где значения являются новой картой, которая должна содержать только ключи «цвет» и «описание». Я пытаюсь написать правила, которые гарантируют, что ключи являются только «цветом» и «описанием», но я не могу найти способ ограничить имена ключей на карте внутри карты.

example

(причина в том, что карта карт внутри отдельного документа состоит в том, что у меня есть правило безопасности, где поле типа массив может содержать только элементы, указанные в "list.list.keys ()")

Я пытался

request.resource.data.list.values()[request.resource.data.list.values().size()-1].keys().hasOnly(["color", "description"])
&& request.resource.data.list.values()[request.resource.data.list.values().size()-1].keys().hasAll(["color", "description"]);

, но это не работает, так как индекс нового значения является случайным, как его карта.

1 Ответ

0 голосов
/ 18 октября 2019

Если вы не знаете всех возможных имен ключей значений в list («Зависимости» и «Тестирование» в вашем случае могут), это будет невозможно применить. Не существует способа подстановки ключей карты, и в настоящее время нет способа итерации ключей карты. Вы должны знать полные пути всего, что можно добавить, чтобы проверить их с помощью правил безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...