使用Express创建反应应用程序

时间:2017-06-16 13:40:35

标签: node.js reactjs express create-react-app pg-promise

我需要使用create-react-app查询数据库。连接到数据库(pg-promise)的库不能与Webpack一起使用,需要在节点服务器上运行。

所以我安装了Express并拥有:

app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, '..', 'build', 'index.html'));
})

如何从React页面加载数据库中的数据?我虽然使用request但是如何向我自己的服务器发出请求?我应该在上面的代码行中添加什么?我认为它会是这样的:

app.get('/query/:querybody', (req, res) => {
  // process and return query
})

这是对的吗?如何使用SPA?

2 个答案:

答案 0 :(得分:1)

可能最无摩擦的方法是在CRA应用程序旁边单独app.jsserver.js。您可以使用concurrently之类的工具同时运行React应用和快速应用。

诀窍是在不同的端口上提供快递应用程序,而不是CRA所服务的默认:8080。通常8081是一个不错的选择,因为在开发过程中使用端口号很常见。

在您的React应用中,您需要确保使用快速终端的完整网址:http://localhost:8081/query/...

答案 1 :(得分:0)

在服务器端,您将朝着正确的方向前进:您需要设置端点,该端点将根据请求响应数据。在您的示例中,您为GET HTTP请求设置了端点。如果您需要传递复杂请求(例如将新记录添加到数据库),请考虑使用POST HTTP请求。

在客户端(在浏览器中),您将需要一个可以帮助您向服务器发送请求的库。我可以推荐尝试Axios(https://github.com/mzabriskie/axios)。通常,如果省略协议,服务器名称和端口,请求将被发送到加载页面的服务器: http:127.0.0.1:8001/api/endpoint => /api/endpoint