这是将数据存储在Firebase实时数据库中的
"Users" : {
"Joe" : {
"name" : "xxx",
"email" : "xxx"
},
"Matt" : {
"name" : "xxx",
"email" : "xxx"
}
}
这是React Native Flatlist中的数据需求
Users : [
{
id : "Joe"
name : "xxx",
email : "xxx",
},
{
id : "Matt"
name : "xxx",
email : "xxx",
}
]
componentDidMount()
中的某个地方。
firebase.database("Users").ref().once('value').then(function(snapshot) {
var arr = _.values(snapshot.val());
this.setState({ users: JSON.stringify(arr) });
})
在渲染Flatlist中:
<FlatList
extraData={this.props}
data={this.props.users}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (
...
如何使用firebase.database().ref()
并返回平面列表中所需的数据?
答案 0 :(得分:0)
您可以尝试以下操作:
首先进入我的constructor
constructor(props) {
super(props);
this.state = {
arrData:[]
};
}
然后从Firebase获取数据
var ref = firebase.database().ref("Users"); //Here assuming 'Users' as main table of contents
ref.once('value').then(snapshot => {
// console.log(snapshot.val());
// get children as an array
var items = [];
snapshot.forEach((child) => {
items.push({
id: child.val().id,
name: child.val().name,
email: child.val().email,
phone: child.val().phone,
status: child.val().status,
user_type: child.val().user_type
});
});
this.setState({ arrData: items});
});
现在您可以在arrData
或FlatList
中填充ListView
。
希望对您有帮助!
答案 1 :(得分:0)
在这里,我得到了问题的数组,该数组由用户发布在对象中,然后创建一个数组,然后将该数组分配给变量。
componentDidMount(){
let user = firebase.auth().currentUser ;
let uid = user.uid;
firebase.database().ref('Problems').orderByChild('userid').equalTo(uid)
.once('value' )
.then(snapshot => {
// console.log(snapshot.val());
var items = [];
snapshot.forEach((child) => {
items.push({
id: child.key,
problemDescription: child.val().problemDescription,
problemTitle: child.val().problemTitle,
problemstatus: child.val().problemstatus,
timeanddate: child.val().timeanddate,
});
});
console.log(items);
this.setState({problmes: items});
this.setState({isloading:false});
})
.catch(error => console.log(error));
}