我需要使用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?
答案 0 :(得分:1)
可能最无摩擦的方法是在CRA应用程序旁边单独app.js
或server.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