В этом случае вам нужно настроить ваши правила примерно так:
лизую книгу рецептов в Firestore, где каждый пользователь может видеть все рецепты, созданные всеми пользователями, но редактировать или удалять рецепт может только оригинальный автор рецепта. Любой пользователь также может создать новый рецепт.
Моя проблема в том, что я не могу настроить разрешения для подколлекции, чтобы «прослушивать» поле родительского документа подколлекций.
Каждый документ рецепта содержит три вещи. Поле называетсяname
где хранится название рецепта, поле называетсяcreatorUID
гдеrequest.auth.uid
из создателей UID хранится и подмножество называетсяingredients
содержащие документы с некоторыми случайными полями.
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /ListOfRecipes/{recipe} {
allow read, create: if isSignedIn();
allow update, delete: if resource.data.creatorUID == request.auth.uid;
match /{list=**} {
allow read: if isSignedIn();
// Should return true if recipe.creatorUID has same value as request.auth.uid
allow write: if recipe.creatorUID == request.auth.uid;
}
}
}
}
Проблема в том, что с этими правилами это работает только для создания документа рецепта. Подколлекция и ее документы не создаются, так как БД говорит
FirebaseError: [code = access-denied]: отсутствует или недостаточно разрешений. FirebaseError: Отсутствует или недостаточно разрешений.
Звонки осуществляются с клиента Angular и его официальной библиотеки.