не знаю, правильно ли я понял вашу проблему, и было бы полезно увидеть ваши правила, которые вы пробовали до сих пор, но я думаю, что это должно работать:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
// Make sure a write to all documents is only allowed when
// the current user has no document in BlockList collection
allow write: if !exists(/databases/$(database)/documents/BlockList/$(request.auth.uid))
}
}
}
Я проверил это с моимэкземпляр пожарного магазина, и это выглядит нормально для меня.Конечно, вам, скорее всего, нужно будет указать документы лучше, чем подстановочный знак.
Неважно, какие данные у вас есть в документах BlockList, если в коллекции BlockList есть документ с userUid в качестве имени документа.
Я создал два документа (которые представляют пользователей)в коллекции BlockList.
![two users in BlockList](https://i.stack.imgur.com/WCHYO.png)
Теперь я пытаюсь записать в свою таблицу турниров, в которой есть упомянутый security.rule, с помощью метода «Обновление» симулятора (с предоставленными учетными данными аутентификации, конечно)
![blocked by rule because user is in BlockList](https://i.stack.imgur.com/4VJx4.png)
При удалении пользователя "8Zvq1fpWl2S0h1t7bIxNoxDcucn1" из BlockList и повторного использования симулятора, я получаю:
![allowed by second rule](https://i.stack.imgur.com/d1BIT.png)
Резюме: для меня это выглядит довольно неплохо.