“我的用户”表(有很多:tweets
)具有以下列:
id
,user_name
,email
,password
,created_at
,update_at
。
和我的Tweets表(属于:user
)具有以下列:
id
,user_id
,tweet
,create_at
,update_at
。
现在我正在制作一个看起来像这样的React项目:
import React from 'react'
class Tweet extends React.Component {
constructor(props) {
super(props);
this.state = {
tweet: this.props.tweet
};
}
render() {
const tweet = this.state.tweet;
return (
<div>
<p>{tweet.user_id} {tweet.created_at}</p>
<p>{tweet.tweet}</p>
</div>
);
}
}
export default Tweet;
是否可以编写代码,以便通过user_name
获得user_id
?我已经尝试过{tweet.user_id.user_name}
,但是它不起作用,或者我必须在Tweets表中有一个user_name
列,这样{tweet.user_name}
是我最好的答案吗?
答案 0 :(得分:1)
我不建议向该表中添加另一个user_name列,因为它的数据库设计不佳,因为您已经具有user_id并可以基于该id查找用户信息。
选项1:
我不知道您的父组件看起来像调用您的Tweet组件,但是如果它可以访问user_name,那么我会通过<Tweet tweet={someTweet} username={someUser}>
将其与Tweet数据一起传递。
选项2:
拉取Tweet数据后,执行另一个请求,以根据该tweet的用户ID获取所有Tweet的user_name。将此用户名添加到React中Tweet对象的形状中,然后您的Tweet组件将可以通过tweet.user_name
访问user_name,而无需更改Tweet表。
答案 1 :(得分:0)
我能够通过将用户信息包含在我的API中来解决此问题,如下所示:
def index
tweets = Tweet.all.where(user_id: current_user.id)
respond_to do |format|
format.html
format.json { render json: tweets.to_json(:include => :user) }
end
end
这样,我可以使用{tweet.user.user_name}
在React组件中获取用户名。