我正在使用Digital Ocean的数据库集群,并尝试从我的node.js API发出查询请求
这是我正在使用的代码
app.get('/current', (req, res) => {
// THIS GETS THE INFORMATION IF YOU WANT DIFFERENT INFO CHANGE THE SQL QUERY
const SQL = "SELECT * FROM ParkingLot;"
db.query(SQL,(err, result) =>{
console.log(result)
res.send(result);
})
})
在控制台日志中打印undefined。我知道我在数据库中有值。我只是不知道该怎么办了。我试过使用async来解决这个问题,但我不确定我是否正确地使用了它。
这是我尝试过的解决方案之一
app.get('/current', async (req, res) => {
// THIS GETS THE INFORMATION IF YOU WANT DIFFERENT INFO CHANGE THE SQL QUERY
const result = await numFullSpaces();
res.send(result)
console.log(numFullSpaces());
})
function numFullSpaces(){
let sql = "SELECT * FROM ParkingLot;"
return new Promise((res, rej) => {
db.query(sql, (err, result) => {
if (err) {
rej(err);
}else{
res(result)
}
})
})
}
由此我得到了错误
triggerUncaughtException(err,true /* fromPromise */);^
错误:连接ETIMEDOUT
我不知道下一步该怎么办。
1条答案
按热度按时间ig9co6j11#
不要直接将用户输入连接到SQL查询中,而是使用带有占位符的参数化查询。这将通过自动转义用户输入来防止SQL注入攻击。
加上:检查err参数。如果出现错误,则会将其记录到控制台,并向客户端发送500 Internal Server Error响应。如果没有错误,结果将记录到控制台并发送到客户端。