Правила Firestore - Проверяют, существуют ли данные в другой коллекции - PullRequest
0 голосов
/ 07 февраля 2019

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

function incomingData() {
  return request.resource.data
}
function validTicket() {
    return incomingData().email is string &&
    incomingData().description is string &&
    incomingData().address is string &&
    incomingData().location is string &&
    incomingData().postCode.matches('^[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]') &&
    incomingData().size() == 5 &&
    incomingData().hasAll(['email','description', 'address', 'location', 'postCode']) &&
    isSecretary()
}

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

enter image description here

1 Ответ

0 голосов
/ 07 февраля 2019

Извините, мой ответ будет неполным, мне нужно, чтобы вы опубликовали свои текущие правила пожарного депо и название коллекции билетов ...

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

далее, вам придется использовать функцию существующие , следующим образом:

function isTagExists(tag) {
    return exists(/databases/$(database)/documents/tags/$(tag));
}

дайте мне знать, если вы обновили вопрос или вам нужна дополнительная помощь по моему решению.

также вы можете прочитать больше на: https://firebase.google.com/docs/firestore/security/rules-conditions

...