如何将我的mongodb数据传输到反应状态

时间:2018-03-30 02:50:34

标签: reactjs express

我有一个反应应用程序,只需从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抛出到我的反应文件,以便它可以处理渲染?

我是否需要在反应文件中包含一些文件,以便查询数据库?提前致谢。一段时间以来一直在想这个但没有运气。

1 个答案:

答案 0 :(得分:1)

在MERN中,React请求被发送到快速服务器,该服务器将在数据库中查询所需数据。然后通过express获取数据并返回到React Web应用程序。

创建一个快速服务器,它将从MongoDB获取所有猫的名称并将其返回到ReactJS Web应用程序。您可以使用Mongoose从MongoDB获取数据。

你必须在类中有一个componentDidMount()方法,并在其中放入api调用,以获取名称。然后,您必须使用从api收到的响应更新状态(setState)。