Мне нужно убедиться, что мои пользователи могут удалить свой «вопрос», только если все «ответы» на этот вопрос уже удалены.
Вопросы и ответы хранятся в разных коллекциях. Вот неверный код, который объясняет, что я ищу:
service cloud.firestore {
match /databases/{database}/documents {
match /questions/{question_id} {
allow delete: if !exists(/databases/$(database)/documents/answers/{answer}).where(answer.question_id == question_id);
}
}
}
Кажется, я не могу понять, как ограничить вызов «существует» только теми, которые являются ответами на вопрос.
Я открыт для всех предложений, даже тех, которые связаны с реструктуризацией моих данных, если это необходимо.
Спасибо большое.
Вы не можете выполнять запросы к коллекции, используя правила безопасности Firebase. Вы можете get()
и проверять exists()
отдельных документов только тогда, когда знаете полный идентификатор этого документа. Итак, то, что вы пытаетесь сделать прямо сейчас, невозможно.
Вместо этого вы можете поддерживать счетчик или логический флаг в каком-либо другом известном документе и разрешать удаление, когда этот счетчик является значением, указывающим условие, по которому пользователю разрешено удалить документ.