我真的在寻找这个问题而我找不到任何东西。也许我不知道应该怎么搜索。我不知道我的问题的名称。也许我认为像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数据库。
如何在列表视图中获取用户名?
答案 0 :(得分:0)
您可以通过将用户数据放入评论中来访问用户数据,例如:
comments: [
{
id: 1,
comment: "Comment A",
user: {
name: "A",
},
},
{
id: 2,
comment: "Comment B",
user: {
name: "B",
},
},
]