mysql - 节点 MySQL 挂起
问题描述
我有我的 GET 端点,它只是一个简单的 SELECT * FROM tableName 并返回表中的所有行,但它一直挂起。当我在 POSTMAN 本地击中它时,它一直在旋转
发送请求......并且程序永远不会出错。get 端点在 connection.query(...) 之后挂起,第四个 console.log("HIT) 没有打印出来
router.get('/allRows', async (req, res) => {
console.log("HIT")
if (req.query.tableName) {
console.log("HIT")
connection.connect((err) => {
if (err) console.log(err);
console.log("HIT")
connection.query(`SELECT * FROM ${req.query.tableName};`), (err, result, fields) => {
console.log("HIT")
if (err) console.log(err);
console.log(result)
res.status(200).json({
message: `Successfully got all data from ${req.query.tableName}`,
result: result
});
};
connection.end((err) => {
if (err)
console.error("Error when closing connection", err)
});
})
}
else {
res.status(400).json({
message: `Please provide table name`,
});
console.log('Missing table name');
}
});
我目前有 3 个“HIT”日志,有什么想法吗?
我注意到,如果我在邮递员中取消无休止的请求并再次点击端点,我会收到PROTOCOL_ENQUEUE_AFTER_QUIT错误
编辑
我将代码更改为:
router.get('/allRows', async (req, res) => {
console.log("HIT")
// also another guard for table name inside an array is needed
if (req.query.tableName) {
console.log("HIT")
connection.connect();
connection.query(`SELECT * FROM ${req.query.tableName}`), (err, rows, fields) => {
console.log("HIT", rows)
if (err) console.log(err);
res.status(200).json({
message: `Successfully got all data from ${req.query.tableName} LIMIT 1`,
result: rows
});
console.log("result")
};
}
else {
res.status(400).json({
message: `Please provide table name`,
});
console.log('Missing table name');
}
});
仍然遇到同样的问题,只有 2 次控制台点击...我已经运行了调试器,当它到达 connection.query 时,它只是跳过它并且不进入箭头功能。
解决方案
根据模块文档,connection.connect 将建立到数据库的实时链接。
只需在服务器启动时调用它,并在服务器关闭时停止它。
当你想解决请求时调用 connection.query。
connection.connect()
router.get(
.....
connection.query()
)
server.on(‘close’, ()=> connection.close()) // I guess
连接错误:
connection.connect(function(err) {
console.log(err.code); // 'ECONNREFUSED'
console.log(err.fatal); // true
});
router.get(
.....
connection.query()
)
server.on(‘close’, ()=> connection.close()) // I guess
推荐阅读
- c++ - C ++双链表,我应该在动态分配节点后删除它们吗?
- swift - “从不”类型作为多泛型初始化的默认类型
- python - 如何在python中读取二进制文件并将其转换为整数数组?
- swiftui - 在 SwiftUI 中实现 Box-Shadow
- java - 在 Anylogic 8.7 中如何调用存储在集合中的特定代理的属性?
- r - 如何引用函数中的列
- python - 在列中查找特定字符并将其与其他列合并
- multithreading - 屏障代码并等待所有线程到达集合点然后进入临界区
- javascript - 我可以将我所有的 html 文件放在一个 javascript const 中并用“HtmlService.createHtmlOutput().setContent(CONST_HTML)”显示它吗?
- go - 如何处理分块文件上传