javascript - 何时关闭 Node.js 中的 MySQL 连接

标签 javascript mysql node.js express

我正在使用 Express 和 MySQL 在 Node.js 中开发一个应用程序。我有以下问题,我应该在哪里使用以下代码关闭与 MySQL 的连接。

    iniciarSesion(correo_electronico, contrasena, ip){

        return new Promise((resolve, reject) => {
            this.db.query('CALL sp_iniciar_sesion( ?, ?, ?, @o_persona_id, @o_usuario_id, @o_nombre, @o_apellido, @o_privilegio, @o_estado, @o_mensaje)', [correo_electronico, contrasena, ip], (error, results, fields) => {
                if(error)
                    reject();
                else{
                    this.db.query('SELECT  @o_persona_id AS persona_id, @o_usuario_id AS usuario_id, @o_nombre AS nombre, @o_apellido AS apellido, @o_privilegio AS privilegio, @o_estado AS estado, @o_mensaje AS mensaje', (error, results, fields) => {
                        var resultadoFinal = JSON.parse(JSON.stringify(results));
                        if(resultadoFinal[0].estado === 0 || !resultadoFinal[0].estado)
                            reject();
                        else
                            resolve(resultadoFinal); 
                    });
                }
            });
        });
    }

除此之外,这个应用程序是面向大量人同时使用的,假设一次有1000人。有没有办法优化代码?或者有什么建议吗?

谢谢。

更新

过了一会儿,我收到以下错误并且应用程序关闭:

Error: read ECONNRESET
   at TCP.onStreamRead (internal/stream_base_commons.js:205:27)
Emitted 'error' event on Connection instance at:
   at Connection._handleProtocolError (/home/opencloud/sevenpickup/node_modules/mysql/lib/Connection.js:423:8)
   at Protocol.emit (events.js:310:20)
   at Protocol._delegateError (/home/opencloud/sevenpickup/node_modules/mysql/lib/protocol/Protocol.js:398:10)
   at Protocol.handleNetworkError (/home/opencloud/sevenpickup/node_modules/mysql/lib/protocol/Protocol.js:371:10)
   at Connection._handleNetworkError (/home/opencloud/sevenpickup/node_modules/mysql/lib/Connection.js:418:18)
   at Socket.emit (events.js:310:20)
   at emitErrorNT (internal/streams/destroy.js:92:8)
   at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
   at processTicksAndRejections (internal/process/task_queues.js:84:21) {
 errno: 'ECONNRESET',
 code: 'ECONNRESET',
 syscall: 'read',
 fatal: true
}

最佳答案

通常,您应该在启动应用程序时打开一次连接。这样您就不必花费额外的时间来为您进行的每个查询重新连接。

您现在的内容看起来不错,您根本不需要关闭连接。

关于javascript - 何时关闭 Node.js 中的 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61217150/

相关文章:

javascript - 检查 pickadate.js datepicker 选择的今天是否不起作用?

javascript - 您将如何像在其他网站上看到的那样使用 javascript 访问用户历史记录?

php - PDO 执行不会正确注入(inject)数组值

php - 内存缓存与 Redis

json - 蒙哥错误: key $ must not start with '$' when store JSON object generated by xml2js module

javascript - 如何执行此正则表达式命令?

javascript - 似乎无法使用 key 访问 S3 存储桶内容

mysql - codeigniter - 如果模型 mysql 查询失败,则将 flashdata 发送回用户

mysql while循环返回null

node.js - MarkLogic 示例查询返回不正确的结果