我是新手,我正在努力从Firebase获取列表。但是我一直坚持给对象提供路径。我不知道如何给事件ID的路径,如图所示。
这是我要提供正确路径的代码。任何帮助将不胜感激。
firebase.database().ref('/events').child('/friends').once('value').then((snapshot) =>{
let data = snapshot.val();
let items = object.values(data);
allUserList.push(items);
this.setState({allFriendList: allFriendList});
}
这是我要在其中显示好友列表的单位列表的代码
<FlatList style={{}} keyboardShouldPersistTaps={'always'}
data={this.state.allFriendList}
ItemSeparatorComponent={this.renderSeparator}
renderItem={({ item }) => {
return (
<TouchableOpacity onPress={() => this.goToNextScreen(item)}>
<View style={{
flexDirection: 'row', paddingBottom: 5, paddingTop: 5,
justifyContent: 'space-between', alignItems: 'center'
}}>
}
}
答案 0 :(得分:2)
您可以在参考文件中完成完整的路径:
firebase.database().ref('/events/friends/whatever-key')
.once('value').then((snapshot) =>{
/// Whatever code
});
答案 1 :(得分:1)
如果您想显示某个事件的朋友列表,并且知道该事件的关键,则可以执行以下操作:
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'... 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});
});
但是我高度建议针对此用例更改/增强您的数据模型。该代码可能有效,但读取的数据量超出了所需。如果同一位朋友出现在更多事件中,则它也可能正在读取重复的朋友。如果您想要一个全局的朋友列表,则可以将其精确地存储在数据库中:一个用户列表,其中可能包含与他们成为朋友的事件的事件ID。
答案 2 :(得分:0)
使用[key]
方法的个人喜好非常适合自定义键名。
例如,如果您知道密钥,data.[key].name
将产生结果。
如果您不知道该键(LRjSl...
),则可以遍历friends
对象:
for (var key in data) {
data[key].name //will be Shabnam
}