我有一个反应应用程序,只需从api中提取数据。而不是api,我决定使用mongodb并创建一个简单的db而不是express作为服务器的工具。
如果我单独使用快递,我可以简单地做两件事: 1.创建一个我可以显示所有数据的路线 2.创建ejs页面,我可以在其中显示所有数据。
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文件/视图中,而是将数据抛给我的反应应用程序,以便它可以为我处理渲染:
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>
);
}
};
注意:我在这里使用了一个辅助函数来提取api数据,但这并非如此,因为我不需要从api中提取数据,而是我需要从mongodb数据库中提取数据。
任何想法如何将数据从express抛出到我的反应文件,以便它可以处理渲染?
我是否需要在反应文件中包含一些文件,以便查询数据库?提前致谢。一段时间以来一直在想这个但没有运气。
答案 0 :(得分:1)
在MERN中,React请求被发送到快速服务器,该服务器将在数据库中查询所需数据。然后通过express获取数据并返回到React Web应用程序。
创建一个快速服务器,它将从MongoDB获取所有猫的名称并将其返回到ReactJS Web应用程序。您可以使用Mongoose从MongoDB获取数据。
你必须在类中有一个componentDidMount()
方法,并在其中放入api调用,以获取名称。然后,您必须使用从api收到的响应更新状态(setState
)。