#firebase #firebase-realtime-database #firebase-security
#firebase #firebase-realtime-database #firebase-безопасность
Вопрос:
Есть ли способ получить имя дочернего элемента? Структура выглядит следующим образом:
appointment-
|- "here_is_some_date"-
|-"some_user_id"-
|-details about it
Мне нужно определить правило для того, кто может читать «встречи», но я не уверен, как получить название даты, чтобы я мог получить доступ к UID. Это то, что я пробовал:
"appointments": {
".read": "data.child(data.val()).child(auth.uid).val() === auth.uid"
}
Ответ №1:
Единственный способ прочитать значение дочернего узла в правилах безопасности Firebase — это знать точный путь от текущего узла (где определено правило) к дочернему узлу.
Итак, если вы знаете и дату, и UID (что вы определенно знаете), вы можете прочитать значение дочернего узла с помощью:
"appointments": {
".read": "data.child('here_is_some_date').child('some_user_id').val() === auth.uid"
}
Но нет способа установить подстановочный знак в этом пути. Немного сложно сказать, какой именно вариант использования вы пытаетесь реализовать, но если это «позволяет пользователю читать даты встреч, на которые у них назначена встреча», то для этого потребуется дополнительная инвертированная структура данных:
"user_appointment_dates": {
"uid1": {
"date1": true // or a more complete structure with the actual appointments
}
}