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

Можете ли вы создать правила безопасности, которые запускают запрос, чтобы проверить, найден ли соответствующий документ?

Я создаю систему, в которой зарегистрированный пользователь может голосовать по определенным темам.

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

Я хочу создать правило безопасности, которое проверяет, есть ли уже документ в разделе голосования с этим конкретным пользователемИдентификатор и идентификатор темы присутствуют, и только пользователь может написать документ для голосования, если это не так.

Я не вижу никаких параметров запроса в документации, так какие у меня варианты?

Могу ли я каким-либо образом создать индекс всех голосов и найти определенный путь к документу в этом индексе?

Или я должен присвоить голосам схему произвольного идентификатора, основанную на идентификаторе пользователя и идентификаторе темы, поэтомуих можно найти?

1 Ответ

2 голосов
/ 14 мая 2019

Вы не можете выполнить запрос с условиями с правилами безопасности.Все, что вы можете сделать, это get() документ, используя его известный путь.То есть вы должны знать все его коллекции и идентификаторы документов, которые однозначно идентифицируют его.

Похоже, что возможно создание других документов (они не должны содержать никаких данных), иих существование может сигнализировать о состоянии, которое вы хотите защитить.

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

...