Как предотвратить удаление, если связанные данные все еще существуют? - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно убедиться, что мои пользователи могут удалить свой «вопрос», только если все «ответы» на этот вопрос уже были удалены.

Вопросы и ответы хранятся в разных коллекциях. Вот некоторый неверный код, который объясняет, что я ищу:

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);
    }
  }
}

Кажется, я не могу понять, как ограничить "существующий" вызов только теми, которые являются ответами на вопрос.

Я открыт для всех предложений, даже тех, которые требуют реструктуризации моих данных в случае необходимости.

Большое спасибо.

1 Ответ

0 голосов
/ 27 мая 2019

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

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

...