我正在为我的应用程序使用 nodejs、express 和 node-mysql2。我希望每个连接的时区都使用 UTC,以便我的 time_created 和 time_modified (MYSQL: On update CURRENT_TIMESTAMP) 列仅具有 UTC 时间戳。我无权设置 MYSQL 服务器的时间戳,因此我只需要在我的应用程序中执行此操作。
我正在使用连接池并为连接事件添加一个事件侦听器,该事件侦听器将该连接的时区设置为 UTC。
pool.on('connection', (conn) => {
conn.query("SET time_zone='+00:00';", (error) => {
if (error) {
throw error;
}
});
});
我的路线定义与此类似:
router.get('/route', async (req, res) => {
try {
const [rows] = await pool.execute('SELECT * FROM student', []);
return res.status(200).send('Success');
} catch (e) {
return res.status(500).send('Failure');
}
});
如果事件侦听器中的此查询“SET time_zone='+00:00'”失败,我的节点服务器会因控制台上的堆栈跟踪而崩溃。我想在我的路线或任何地方捕捉到这种错误,以便我可以向客户发送 500 响应。你能告诉我什么是处理快速路由中事件监听器抛出的这种异常的好方法吗?