правило безопасности firestore resource.data - пустой объект - PullRequest
0 голосов
/ 30 апреля 2018

В правиле безопасности firestore resource.data всегда является объектом emtpy, это ошибка или что-то в этом роде?

Правила моего пожарного магазина:

service cloud.firestore {
  match /databases/{database}/documents {
    match /hospitals/{document=**}{

      // allow read :if resource.data.size() == 0; //this return true, resource.data is an empty object

          allow read :if resource.data.name != null; // this doesn't work
    }
  }
}

Мой JavaScript:

auth().onAuthStateChanged((user) => { 
  if (user) {

    //db is the firestore instance
    db.collection('/hospitals').get()
      .then(printResult)

  } else {

  }
}) 

это мой текущий снимок базы данных image

решено:

спасибо за ответ Фрэнка

проблема заключается в том, что система безопасности пожарного депо не оценивает фактическое значение документа, когда мы запрашиваем более одного документа, в моем случае

//this doesn't firestore doesnt' evaluate the documetn
db.collection('hospitals').get()

//this will work ,if you need to compare the actual value
db.document('hospitals/somehospital').get()

1 Ответ

0 голосов
/ 01 мая 2018

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

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

db.collection('/hospitals')
  .where("name", ">=", "")
  .get()
  .then(printResult)

Обратите внимание, что для этого необходимо, чтобы в документе было поле name, иначе имя не может быть пустым.

Для получения дополнительной информации см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...