Чтобы обеспечить безопасный доступ ваших пользователей к подмножеству данных в этом узле, вам нужны две вещи:
- запрос, который выбирает только те узлы, к которым вы хотите, чтобы они обращались.
- правил безопасности, которые затем разрешают только этот запрос.
Здесь важно осознать необходимость запроса, поскольку сами правила безопасности не фильтруют данные.
Итак, в вашем случае запрос (в JavaScript) будет выглядеть примерно так:
var uid = firebase.auth().currentUser.uid;
var query = firebase.database().ref('messages').orderByChild('userId').equalTo(uid);
И тогда вы будете проверять этот запрос с помощью правил, которые выглядят примерно так:
{
"rules": {
"messages": {
".read": "auth.uid != null &&
query.orderByChild == 'userId' &&
query.equalTo == auth.uid"
}
}
}
Подробнее об этом см. Документацию Firebase по правилам на основе запросов .