База данных Firebase читает весь узел, но зависит от разрешения дочернего узла для возврата правильных данных

Я устанавливаю правила в Firebase следующим образом:

 "Data": {
  ".read": true,
    "data1": {
      ".write": "root.child('Permissions').child(auth.uid).val() == 'admin'",
      ".read": true
    },
    "data2": {
      ".write": "root.child('Permissions').child(auth.uid).val() == 'admin'",
      ".read": "root.child('Permissions').child(auth.uid).val() == 'admin'"
    }
}

и в моем коде я хочу, чтобы при чтении узла «Данные» и возврат данных должен содержать только узел «данные1», если у пользователей нет разрешения «администратор», иначе возвращаются как «данные1», так и «данные2». В настоящее время, когда я получаю дочерние «Данные», возвращаются оба.


person Hoang Trung    schedule 07.09.2017    source источник
comment
что, если вы удалите ".read": true из узла данных?   -  person user2520818    schedule 07.09.2017
comment
тогда это будет отказ в разрешении, когда я попытаюсь прочитать узел данных   -  person Hoang Trung    schedule 07.09.2017
comment
из другого вопроса (stackoverflow.com /questions/14296625/) кажется, что firebase не позволяет фильтровать данные через разрешения.   -  person user2520818    schedule 07.09.2017


Ответы (1)


Согласно документам:

{
   "rules": {
     "foo": {
       // allows read to /foo/*
       ".read": "data.child('baz').val() === true",
       "bar": {
         /* ignored, since read was allowed already */
         ".read": false
       }
      }  
    }
}

если вы разрешаете чтение или запись на более высоком уровне (".read": true), он игнорирует другие правила ниже по дереву (".read": "root.child('Permissions').child(auth.uid).val() == 'admin'").

person user2520818    schedule 07.09.2017
comment
у вас есть решение моей проблемы? - person Hoang Trung; 07.09.2017
comment
Я думаю, вам нужно вытащить данные отдельно. Data/data1 и Data/data2 вместо Data - person user2520818; 07.09.2017