【问题标题】:Retrieve children of child in realtime database firebase with react native使用本机反应在实时数据库火力库中检索孩子的孩子
【发布时间】:2021-11-08 22:29:13
【问题描述】:

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

在我的例子中,我只能看到两个孩子的两个对象,但我看不到每个反馈的内容

*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;
}

【问题讨论】:

    标签: javascript react-native firebase-realtime-database


    【解决方案1】:

    如果您在数组中看到两个项目,则说明工作正常,因为屏幕截图中 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多