Duvida FlatList pegando dados de ''tabelas'' diferentes do Firebase

0 respostas
firebase
Paulo_Cezar1

Bom Dia.
Estou desenvolvendo um aplicativo em react-native junto com firebase e estou com duvidas quando vou fazer listas,Eu estou pegando os dados do firebase na ‘‘tabela’’ pets, consigo retornas todos os dados dessa ‘‘tabela’’, tem um campo que seria o useurUid que é o usuário dono dessa animal, e eu queria pegar os dados do usuário para adicionar e utilizar nessa lista tbm, tentei fazer algo assim, mas não está dando certo.
Obs: a parte que retorna os dados de cada animal do banco está dando certo, inclusive está retornando os userUid, a parte de pegar os dados no banco com base no userUid e também adicionar na lista que está dando errado.

import React, { Component } from 'react';
import { NavigationActions, StackActions } from 'react-navigation';
import { connect } from 'react-redux';
import { SignOut } from './actions/AuthActions';
import firebase from './FirebaseConnection';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import {
    StyleSheet,
    View,
    Text,
    Image,
    TouchableOpacity,
    Dimensions,
    Button,
    Header,
    FlatList
} from 'react-native';
import { metrics, fonts, colors } from './styles';
const { width } = Dimensions.get('window')
export class Lost extends Component {
    static navigationOptions = {
        title: 'Perdidos',
        headerTitleStyle: {
            textAlign: 'center',
            flex: 1
        },
        //header: null,
        headerTintColor: '#333',
    }
    constructor(props) {
        super(props);
        this.state = {
            list: []
        };
        firebase.database().ref('pets/lost').on('value', (snapshot) => {
            let state = this.state;
            state.list = [];
            var userName = '';
            snapshot.forEach((childItem) => {
                firebase.database().ref('/users/' + childItem.val().userUid + '/profile').once('value').then((snapshot2) => {
                    userName: snapshot2.val().name;
            
                });
                state.list.push({
                    key: childItem.key,
                    userName: userName,
                    name: childItem.val().name,
                    breed: childItem.val().breed
                });
            });
            this.setState(state);
        });
    }
    render() {
        return (
            <View>
                <FlatList
                    data={this.state.list}
                    renderItem={({ item }) => {
                        return (
                            <View>
                                <Text>{item.name},{item.userName}</Text>
                            </View>
                        );
                    }}
                />
            </View>
        );
    }
}
const mapStateToProps = (state) => {
    return {
        status: state.auth.status,
        uid: state.auth.uid,
        name: state.auth.name,
        email: state.auth.email,
        city: state.auth.city,
        uf: state.auth.uf
    };
};
const LostConnect = connect(mapStateToProps, { SignOut })(Lost);
export default LostConnect;
Criado 18 de setembro de 2019
Respostas 0
Participantes 1