Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将mongodb数据传输到react状态_Reactjs_Express - Fatal编程技术网

Reactjs 如何将mongodb数据传输到react状态

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)

我有一个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);
    } 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你想要什么