我正在开发一个简单的页面构建器应用程序,该应用程序在前端使用React,在后端使用Express。
作为Ajax库,我使用Axios npm包。您可以在下面看到与此问题相关的代码:

###########
PageList.js
###########
.
.
.
componentDidMount() {
          axios.get('/admin/pages')
          .then(response => {
             console.log(response.data);
         })
         .catch(err => {
             console.log(err);
         })
    })
}
.
.
.


这是前端部分。在后端,我有一个路由器可以正常工作,即将我路由到该控制器(我可以从服务器端控制台的日志中看到此信息):

####################
controllers/admin.js
####################
.
.
.
exports.getPages = (req, res, next) => {
    Page.find()
        .then(pages => {
            return pages;
        })
        .catch(err => {
            console.log(err)
        });
};
.
.
.


前端和后端都在Windows计算机上的localhost上作为节点应用程序运行,并在不同的端口上运行。最初,我使用cors npm软件包解决了CORS问题,并得以解决。作为数据库管理员,我将mongodb与mongoose ODM结合使用。

我遇到的问题是,当我向所有后端端点发送Ajax请求时,该应用程序会堆积4分钟(确切地说,我不知道结果如何...),后端在哪个时间段有效它的工作,它将记录我设置的所有控制台,如果是POST请求,则将文档写入DB中,但要等4分钟,系统才会提示前端该请求已成功。在此期间,开发工具->网络标签中的请求的状态为待处理。

我可以创建一个git-hub仓库,但是仍然没有隐藏所有那些敏感信息,即它们仍然在应用程序的某些位置进行了硬编码,因此公开访问我使用的资源是有风险的。
因此,如果有人可以对问题进行提示,我会感到很高兴。

谢谢

最佳答案

您忘记了实际发送从数据库中检索的数据。因此,您的服务器在4分钟后进入超时状态。

您可以通过调用res.sendres.json来解决此问题,如下所示:

####################
controllers/admin.js
####################
.
.
.
exports.getPages = (req, res, next) => {
    Page.find()
        .then(pages => res.send(pages))
        .catch(err => {
            console.log(err)
        });
};
.
.
.

关于javascript - React.js待处理4分钟,然后才能从Express.js返回响应和Restful api,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53726995/

10-12 00:49