Как использовать Firebase Rule существует в SubCollection в Firestore - PullRequest
0 голосов
/ 20 января 2020

В настоящее время я работаю над правилом Firebase и также являюсь новичком ie. Я использую существует, и кажется, что он не работает, возможно, мой синтаксис или запрос не верны. Есть идеи, как это должно работать? Я пытаюсь проверить данные документа, которые я обвел красным, если они существуют.

Редактировать: Кажется, я буду использовать get () и не буду существовать для извлечения uid из базы File Path на у меня вопрос, как сделать Путь к файлу тем полем, которое я обвел, чтобы использовать его для условия в Firebase Rule.

enter image description here

Клиент Код

return Firestore.instance
    .collection('contacts')
    .document(uid)
    .setData({
  friendId: {
     “message”: {
    },
    “uid”: friendId,
  }
});

Правила безопасности Firebase

    match /databases/{database}/documents {
        match /contacts/{userID}/{friendID} {
          allow read,write : if isValidToAccessContacts(userID,friendID);
        }
      }

        function isValidToAccessContacts(userId,friendID){
          return exists(/databases/$(database)/documents/contacts
          /$(request.auth.uid)/$(friendID.data.uid)/{document=**}) || 

          exists(/databases/$(database)/documents/contacts
          /$(friendID.data.uid)/$(request.auth.uid)/{document=**}) || 

          exists(/databases/$(database)/documents/contacts
          /$(request.auth.uid)/$(request.auth.uid)/{document=**})
          ;
        }

1 Ответ

1 голос
/ 20 января 2020

Вы не можете использовать подстановочный знак, подобный этому {document=**} с использованием существует. Вы должны вызвать полный путь к документу, чтобы проверить его существование.

...