Согласно документации Firebase правила не являются фильтрами . Однако в прошлом году (2018) были введены правила запросов , я думаю, что сообщение в блоге лучше, чем документы для понимания этого.
Таким образом, чтобы сохранить текущую структуру данных, ваше правило должно измениться на:
{
"rules": {
"items": {
".read": "query.orderByChild == 'userId' && query.equalTo == auth.uid"
}
}
}
Затем вы должны изменить свой запрос:
firebase.database().ref(`/items`).orderByChild('userId').equalsTo(userId)...
И, наконец, кажется, что ваша структура базы данных может указывать на другие потребности:
- Если вы хотите, чтобы ваши данные были доступны только для пользователя, который их создал, а также для администратора, который может видеть все, то лучшим решением будет денормализация ваших данных. Ваша структура данных будет:
user_items: {
uid1: {
key1:{//full object here}
}
},
items: {
key1:{//partial item here, just name and photo, think on a list}
},
admins:{
uid1:true
}
Здесь проблема администрирования решается с помощью узла администратора, который может использоваться вместе с пользовательскими утверждениями и Firebase Functions .
- Так как есть мест word , возможно, вам нужно использовать что-то еще, например geofire для локаций