我刚刚开始学习 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>
);
}
}
当我记录数据时,控制台显示未定义。
我做错了什么。
最佳答案
编辑 1:
您还使用 mongoose 进行查询,这是错误的,因为它将第一个参数作为查询:
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)
})
关于node.js - 我如何使用mongoose、nodejs从Mongodb获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839867/