Javascript 在快速路由中从事件侦听器捕获异常
我正在为我的应用程序使用nodejs、express和node-mysql2。我希望每个连接的时区都使用UTC,以便我创建的time_和修改的time_(MYSQL:On update CURRENT_TIMESTAMP)列的时间戳仅为UTC。我没有权限设置MYSQL服务器的时间戳,因此我只需要在我的应用程序中进行设置 我正在使用连接池并为连接事件添加一个事件侦听器,该侦听器将该连接的时区设置为UTCJavascript 在快速路由中从事件侦听器捕获异常,javascript,node.js,express,node-mysql,node-mysql2,Javascript,Node.js,Express,Node Mysql,Node Mysql2,我正在为我的应用程序使用nodejs、express和node-mysql2。我希望每个连接的时区都使用UTC,以便我创建的time_和修改的time_(MYSQL:On update CURRENT_TIMESTAMP)列的时间戳仅为UTC。我没有权限设置MYSQL服务器的时间戳,因此我只需要在我的应用程序中进行设置 我正在使用连接池并为连接事件添加一个事件侦听器,该侦听器将该连接的时区设置为UTC pool.on('connection', (conn) => { conn.que
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'”失败,则我的节点服务器将在控制台上与stacktrace一起崩溃。我想在我的路线或任何地方捕捉这种错误,这样我就可以向客户端发送500个响应。您能告诉我什么是处理express route中事件侦听器引发的此类异常的好方法吗?池将发出多少时间
连接
事件?@JackOfAshes MohitGawande我不确定,但我认为这取决于我需要的并行连接数。我现在对系统没有太多的负担,因此您可以在MAX上考虑4-5。您可以使用全局变量来实现GET路由处理程序,并从自定义错误事件处理程序中更新这个全局变量,并在数据库连接事件处理程序的查询中发生错误时触发此自定义事件。仅在连接创建期间使用选项。请检查此链接:@SagarCh我试过了,但显然它没有改变MYSQL的行为:在更新当前_时间戳时,MYSQL服务器使用其主机区域设置/时间戳,而不使用UTC。我尝试了时区:'+00:00'或时区:'Z'或时区:'UTC',但没有任何效果。我正在使用mysql2而不是mysql,所以它可能会与mysql一起工作。多少时间池将发出连接
事件?@jackofash MohitGawande我不确定,但我认为这取决于我需要的并行连接数。我现在对系统没有太多的负担,因此您可以在MAX上考虑4-5。您可以使用全局变量来实现GET路由处理程序,并从自定义错误事件处理程序中更新这个全局变量,并在数据库连接事件处理程序的查询中发生错误时触发此自定义事件。仅在连接创建期间使用选项。请检查此链接:@SagarCh我试过了,但显然它没有改变MYSQL的行为:在更新当前_时间戳时,MYSQL服务器使用其主机区域设置/时间戳,而不使用UTC。我尝试了时区:'+00:00'或时区:'Z'或时区:'UTC',但没有任何效果。我使用的是mysql2而不是mysql,因此它可以与mysql一起工作。