【发布时间】:2019-12-18 10:19:05
【问题描述】:
问题
我将 create-react-app webapp 部署到 aws ec2。它用于显示来自数据库的数据并向其发送数据。我使用 ExpressJS、CORS 和 MySQL。 使用以下代码,我获取相应的 URL,server.js 发回数据库内容。到这里为止,一切正常。
getBets = _ => {
fetch("http://ec2***.amazonaws.com
.then(response => response.json())
.then(response => this.setState({bets: response.data}))
.catch(err => console.error(err))
};
使用以下代码向数据库发送数据时出现问题:
addBet = _ => {
const { bet } = this.state;
fetch(`http://ec2***.amazonaws.com/bets/add?name=${bet.person_name}&bet=${bet.time_bet}`)
.then(response => response.json())
.then(this.getBets)
.catch(err => console.error(err))
};
点击 addBet-函数会填充数据库,但在 chrome 中我出现以下错误:
GET http://ec2***.amazonaws.com/bets/add?name=Peter%20Pan5&bet=10:17%205 net::ERR_EMPTY_RESPONSE
和
TypeError: Failed to fetch
关于chrome dev-tools,第一个错误对应addBet函数中的fetch,第二个错误对应catch部分。
在服务器端,我有以下用于处理提取的代码:
app.get("/bets/add", (req, res) => {
const {name, bet} = req.query;
const INSERT_BET = `INSERT INTO bets (name, bet, timestamp) VALUES("${name}", "${bet}", CURTIME())`;
connection.query(INSERT_BET, (err, res) => {
if (err) {
return res.send(err);
}
else {
return res.send("succesfully added your bet");
}
})
});
我想提一下,app.get 部分中的 res 参数是未使用的。这告诉我我的 IDE。 经过大量时间深入研究 expressJS 和 fetch api 的主题后,我猜 app.get 部分不会向服务器发送响应。但是获取需要一些响应。
我的问题
如何更改 app.get 部分中的代码才能将正确的响应发送回服务器? 和 我猜对了吗?
【问题讨论】:
-
控制台有错误吗?状态码?
-
我最初的帖子中的两个错误是唯一的。在服务器端,我不熟悉 ec2 实例的控制台。或者换句话说,我无法获得与我的问题对应的日志。
-
我的意思是浏览器的控制台从你调用 API 的地方
标签: node.js reactjs express fetch-api