Если вы хотите показать список друзей для определенного события, и вы знаете ключ этого события, вы можете сделать что-то вроде:
let eventKey = '-LRuFQAsleScaEK2MqXu';
let eventRef = firebase.database().ref('events').child(eventKey);
eventRef.child('friends').once('value').then((snapshot) =>{
let allFriendList = [];
snapshot.forEach((friendSnapshot) => {
let data = friendSnapshot.val();
allUserList.push(data);
});
this.setState({allFriendList: allFriendList});
});
Некоторые изменения:
- Этот код прослушивает только определенный путь
/events/-LRuFQAsleScaEK2MqXu/friends
.Фактически, он мог использовать этот путь для прослушивания, то есть firebase.database (). Ref ('/ events / -LRuFQAsleScaEK2MqXu / friends'). Once ('value' ... ` - The
snapshot
мы получаем из этого несколько друзей, поэтому мы зацикливаемся на них с snapshot.forEach()
. - Как только мы добавили всех друзей в список, мы вызываем
setState
, чтобы сообщить React о них.
В комментариях вы указываете, что хотите объединить все списки друзей, с которыми вы можете делать:
let eventsRef = firebase.database().ref('events');
eventRef.once('value').then((snapshot) =>{
let allFriendList = [];
snapshot.forEach((eventSnapshot) => {
eventSnapshot.child('friends').forEach((friendSnapshot) => {
let data = friendSnapshot.val();
allUserList.push(data);
});
});
this.setState({allFriendList: allFriendList});
});
Но я весьма рекомендую изменить / дополнитьВаша модель данных для этого варианта использования. Этот код может работать, но считывает намного больше данных, чем необходимо. Он также может читать дублирующихся друзей, если один и тот же друг присутствует в большем количестве событий. Если вам нужен глобальный список друзей,Я бы точно сохранил это в базе данных: список пользователей, возможно, с идентификаторами событий, с которыми они дружат.