Estoy tratando de recuperar algunos datos de la base de datos Firebase en tiempo real y mostrarlos en la pantalla. Implementé una función snapshotToArray para convertir Json en matriz. Tengo la colección de comentarios y quiero recuperar todos los hijos de JAHC9F... para mostrar el contenido de if child (dentro de new, task1, task4 y new)
Aquí, en mi caso, solo puedo ver dos objetos para dos niños, pero no puedo ver el contenido de cada comentario.
*user.uid es igual a J4HC9FgMM.. en este caso
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> ); } }
Aquí la implementación de la función snapshotToArray:
export const snapshotToArray= snapshot=>{ let returnArr=[] snapshot.forEach(childSnapshot => { let item=childSnapshot.val() item.key=childSnapshot.key returnArr.push(item) }); return returnArr; }
Si ve dos elementos en la matriz, eso funciona como se espera, ya que hay dos nodos secundarios en J4HC9FgMM..
en la captura de pantalla.
Si desea mostrar los nodos secundarios de cada nodo secundario (es decir, los nodos con nombres New
, Task1
, etc.), necesita dos bucles anidados:
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; }