使用 React Native 在实时数据库 firebase 中检索 children of child

Retrieve children of child in realtime database firebase with react native

我正在尝试从实时数据库 firebase 中检索一些数据并将其显示在屏幕上。我已经实现了一个函数 snapshotToArray 来将 Json 转换为数组。 我有反馈收集,我想检索 JAHC9F 的所有 children.. 以显示 if child 的内容(在 new 、task1、task4 和 new 中)

在我这里,我只能看到两个 children 的两个对象,但我看不到每个反馈的内容

*user.uid 等于 J4HC9FgMM.. 在这种情况下


 componentDidMount=async()=>{
   const feedbacks=await firebase.database().ref("Feedback").child(user.uid).once('value');
   const feedbackArray=snapshotToArray(feedbacks);
   this.props.loadFeedbacks(feedbackArray);
 }



renderItemFeedback = (item, index) => {
 return (
   <View>
     <Text>{item.name}</Text>
     <View>
         <NetworkImage
           source={{ uri: item.ImageFeedback }}
         />
     </View>

     <View>
       <Text>{item.countLike}</Text>
     </View>
   </View>
 );
};
render() {
 return (
   <CustomBackground>
     <ScrollView>
       <View>
         <FlatList
           data={this.props.feedbacks.feedbacks}
           renderItem={({ item }, index) =>
             this.renderItemFeedback(item, index)
           }
           keyExtractor={(item, index) => index.toString()}
         />
       </View>

     </ScrollView>
   </CustomBackground>
 );
}
}

这里是snapshotToArray函数的实现:

export const snapshotToArray= snapshot=>{
    let returnArr=[]

    snapshot.forEach(childSnapshot => {
        let item=childSnapshot.val()
        item.key=childSnapshot.key

        returnArr.push(item)
    });

    return returnArr;
}

如果您在数组中看到两个项目,则说明工作正常,因为屏幕截图中 J4HC9FgMM.. 下有两个子节点。

如果要显示每个子节点的子节点(所以名称为NewTask1等的节点),则需要两个嵌套循环:

export const snapshotToArray= snapshot=>{
    let returnArr=[]

    snapshot.forEach(childSnapshot => {
        childSnapshot.forEach(grandchildSnapshot => {
            let item=grandchildSnapshot.val()
            item.key=grandchildSnapshot.key

            returnArr.push(item)
        })
    });

    return returnArr;
}