获取在ListView中给出id号的用户名(React Native-Firebase)

时间:2017-08-13 19:45:39

标签: reactjs listview typescript react-native firebase-realtime-database

我真的在寻找这个问题而我找不到任何东西。也许我不知道应该怎么搜索。我不知道我的问题的名称。也许我认为像sql结构一样。

我有电影提取应用和评论电影。我有这样的数据库:

movieId0550: {
      comments: {

         XerqoıasYye.. : {
           comment: 'this is comment',
           user: userId45aqqwuwqh
       },

         DfgakYjsk.. : {
           comment: 'this is comment2',
           user: userId7jsus
       }
    }
}


users: {
     userUid45aqq... : {
            name: 'Jack Daniel'
            }
}

我在列表视图中列出了评论。我想在列出评论时写下每个用户名。

因此,我必须在列出每个项目时获取用户。

我的列表视图就是这样。只需查看CommentName组件即可。它是打印每个用户名称的组件:

<List
            dataArray={this.props.comments} 
            renderRow={data =>
            <TouchableWithoutFeedback onLongPress={() => this.popUpDelete(data.uid)}>
              <ListItem avatar>
                <Left>
                  <Thumbnail source={{ uri: 'https://s3.amazonaws.com/37assets/svn/1065-IMG_2529.jpg' }} />
                </Left>
                <Body>
                  <Text>{data.comment}</Text>
                  <Text numberOfLines={3} note>{data.comment}</Text>
                </Body>
                <Right>
                  <CommentName userId={data.userId} />
                </Right>
              </ListItem>
            </TouchableWithoutFeedback>
        }
        />

在CommentName组件中,我尝试获取componentDidMount中的数据...我知道它看起来像傻瓜但我无法设置逻辑并只是尝试某些方法。我的CommentName组件:

    class CommentName extends Component {
    constructor(props) {
        super(props);
        this.state = { name: 'nsull' };
    }
    componentDidMount() {
        console.log(this.props.userId);
        const ref = firebase.database().ref(`users/${this.props.userId}`);
        return () => {
            ref.once('value', (snapshot) => {
            this.setState({ name: snapshot.val().name });
        });
    };
    }
    render() {
        return (
            <View><Text>{this.state.name}</Text></View>
        );
    }
}

export default CommentName;

所以我有几个问题:

  • 我的数据库结构是否为true?我开始认为我犯了错误,我想象它是sql数据库。

  • 如何在列表视图中获取用户名?

1 个答案:

答案 0 :(得分:0)

  1. 评论应该是一个数组。
  2. 您可以通过将用户数据放入评论中来访问用户数据,例如:

    comments: [
        {
            id: 1,
            comment: "Comment A",
            user: {
                name: "A",
            },
        },
        {
            id: 2,
            comment: "Comment B",
            user: {
                name: "B",
            },
        },
      ]