У меня следующая структура данных:
Orders
|_ -M6LSRsTuVY
|___ Cust_ID: "6WERv67YUVT"
|___ Items: "A, B, C, D"
|___ Status: "Query"
|___ Location: "xyz"
Предполагается, что это запрос заказа, размещенного пользователем. Cust_ID содержит идентификатор пользователя, разместившего заказ. Список пользователей - это другой список. Заказ будет виден пользователю, чей идентификатор совпадает с Cust_ID, и пользователям, которые относятся к типу поставщик. Я не предоставляю здесь эту структуру данных. При необходимости могу предоставить и это.
Теперь я прикрепил прослушиватели событий значения для обоих типов пользователей следующим образом: на этапе «Запрос», а ниже - для пользователя, разместившего заказ.
mRef.orderByChild("Cust_ID").equalTo(userid).addValueEventListener
Оба этих поиска работали отлично, когда для правил безопасности базы данных установлено значение «true». Затем я изменил правила безопасности, так что заказы могут быть прочитаны только Клиентом, чей идентификатор совпадает с Cust_ID, или пользователем, имеющим тип поставщика. Правило безопасности базы данных для «чтения» выглядит следующим образом:
".read": "(auth != null && query.orderByChild === 'Cust_ID' && query.equalTo === auth.uid)
||(auth != null && query.orderByChild === 'Status' && query.equalTo === 'Query')",
После размещения этого правила безопасности вторая операция поиска, при которой идентификатор клиента совпадает с идентификатором пользователя, работает отлично. Но первая операция поиска, когда Поставщик ищет «Запрос», не работает, так как есть «В разрешении отказано».
Может ли кто-нибудь помочь в том, что здесь происходит.