Reactjs 如何将mongodb数据传输到react状态
我有一个react应用程序,它只需从api中提取数据。我决定使用mongodb而不是api,并用express创建了一个简单的db作为服务器的工具 如果我单独使用express,我可以做两件事: 1.创建一条可以显示所有数据的路线 2.创建ejs页面,我可以在其中显示所有数据Reactjs 如何将mongodb数据传输到react状态,reactjs,express,Reactjs,Express,我有一个react应用程序,它只需从api中提取数据。我决定使用mongodb而不是api,并用express创建了一个简单的db作为服务器的工具 如果我单独使用express,我可以做两件事: 1.创建一条可以显示所有数据的路线 2.创建ejs页面,我可以在其中显示所有数据 app.get('/cats', function(req, res){ cat.find({}, function(err, allCats){ if(err){ console.log(err)
app.get('/cats', function(req, res){
cat.find({}, function(err, allCats){
if(err){
console.log(err);
} else {
res.render('cats', {cats: allCats});
}
})
});
然后从EJS文件:
<% cats.forEach(cat => { %>
<h4><%= cat.title %></h4>
<h5><%= cat.breed %></h5>
<% }); %>
现在,我不需要将这些数据发送到ejs文件/视图,而是需要将这些数据发送到我的react应用程序,以便它可以为我处理渲染:
class App extends Component{
constructor(props){
super(props);
this.state = {
cats: [],
};
this.catSearch('meow');
}
catSearch(term){
getCats(term, API_KEY, (cats) => {
this.setState({
cats: cats,
});
});
}
render(){
const catSearch = _.debounce((term) => { this.catSearch(term) }, 300);
return (
<div>
<SearchBar onSearchTermChange={catSearch}/>
<CatList cats={ this.state.cats }/>
</div>
);
}
};
注意:我在这里使用了一个helper函数来调出api数据,但这里不是这样,因为我不需要从api调出数据,而是需要从mongodb数据库调出数据
知道如何将数据从express抛出到react文件,以便它能够处理渲染吗
我是否需要在react文件中包含一些文件以便查询数据库?提前谢谢。考虑这个问题已经有一段时间了,但运气不好。在MERN中,React请求被发送到express服务器,该服务器将查询数据库中所需的数据。然后由express提取数据并返回React web app 创建一个express服务器,该服务器将从MongoDB获取所有CAT的名称,并将其返回到ReactJS web应用程序。您可以使用从MongoDB获取数据
您必须在类中有一个componentDidMount方法,并将api调用放入其中,才能获取名称。然后,您必须使用从api收到的响应更新状态setState 您不想尝试API调用的任何具体原因?我计划使用完整的堆栈MERN。使用MERN您可以进行调用。渲染嵌入数据的页面太糟糕了。我这样做了:componentDidMount{console.log'i got here..'fetch'/cats'。thenresponse=>response.json。thendata=>this.setState{cats:data};}但最终没有奏效。并在promise SyntaxError中未捕获错误:位置0处的JSON中出现意外标记<这是JSON的错误,请尝试componentDidMount{console.log'i got here..'fetch'/cats'.thenresponse=>console.logresponse并检查您是否得到了我得到的响应。因此,基本上这里运行两个独立的服务器。localhost:8080用于webpack/react,localhost:3000用于express。您能代替console.logresponse做console.logresponse.body吗?这可能是r你想要什么