我刚刚开始学习Nodejs,mongodb,reactjs并遇到麻烦。
我正在尝试从mongodb获取数据。
后端代码:
app.post('/tweet',(req,res)=>{
tweetData.find((err,data)=>{
if(err){
return res.json({success: false, error: err});
}
return res.json({success: true, data:data});
});
})
字体结束代码:
class TweetContainer extends React.Component{
constructor(props){
super(props);
this.state = {
data:null,
API_URL : 'http://localhost:5000/tweet'
}
}
componentDidMount(){
fetch(this.state.API_URL)
.then(response=>response.json)
.then(result=>{
this.setState({
data: result.data
});
console.log(this.state.data)
});
}
render(){
return(
<div id="main">
<h2>Tweet</h2>
<div id="stream">
</div>
</div>
);
}
}
当我记录数据时,控制台显示未定义。
我做错了。
答案 0 :(得分:1)
您还在用猫鼬查询,这是错误的,因为它将第一个参数作为查询:
app.post('/tweet',(req,res)=>{
tweetData.find(queryObject || {}, (err,data)=>{
if(err){
return res.json({success: false, error: err});
}
return res.json({success: true, data:data});
});
})
您在更新状态后立即记录状态,让我告诉您这不是它的工作方式,它不会立即更新状态,因此您必须等待它执行。
您可以将回调传递给setState
,以便在状态更改完成后执行回调,如下所示:
this.setState({ data: result.data }, () => {
console.log(this.state)
})