Документация предполагает, что ваше первое правило недостаточно , чтобы разрешить запрос группы сбора на сообщения.
В ваших правилах безопасности вы должны разрешить этот запрос [группы сбора], написав правило чтения или списка для группы сбора сообщений.
match /{path=**}/posts/{post} {
allow read: if request.auth.uid != null;
}
Если вы спрашиваете, можно ли использовать правила безопасности для ограничения запроса группы сбора к подмножеству подколлекций, называемых «сообщениями», это невозможно. Все коллекции, называемые «сообщения», будут учтены в запросе. Вот почему подстановочный знак должен также находиться в начале пути совпадения, потому что все остальное будет попыткой ограничить набор коллекций.
Это всего лишь разновидность основного правила, согласно которому правила безопасности не являются фильтрами . Они не могут ни фильтровать документы для обычных запросов, ни коллекции для запросов групп сбора.
Документация идет дальше, чтобы помочь вам понять, как смоделировать ваши данные, чтобы вы могли применить фильтр к клиенту и сопоставить его с полями, которые существуют в документах, которые вы ищете. Клиент всегда может фильтровать результаты с помощью предложения where, но он также должен соответствовать ограничениям правил безопасности.