【发布时间】:2018-09-23 00:21:45
【问题描述】:
我有一个这样的路由器文件:
import express from 'express';
import health from './health';
import surface from './surface';
const router = express.Router();
router.use('/health', health);
router.use('/surface', surface);
router.get('*', (req, res) => {
res.status(404);
res.json({
message: 'Uknown API endpoint'
});
});
export default router;
在每条路由中,我使用 NPM mysql 包来创建一个连接,然后在我调用 res.send() 之前结束它。 IIRC 创建一个连接并在每个查询中结束它是一个坏主意。
我尝试过像这样的中间件:
router.use((req, res, next) => {
next();
mySingletonWrappingMysql.connection.end();
});
鉴于我的路由正在执行异步操作,endConnection 调用发生得太快了。 next 并不是真正的异步,所以我不能这样做 await next 我什至不确定这是否是正确的方法/地点。此示例使用单例,因为我也不确定如何正确设置要在路由中使用的新实例。 req.param 似乎不是最佳选择,因为它似乎适用于特殊查询参数变量。
【问题讨论】:
标签: mysql node.js express database-connection