簡體   English   中英

何時關閉Node.js中的MySQL連接

[英]When to close a MySQL connection in Node.js

我正在使用 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
}

通常,您應該在啟動應用程序時只打開一次連接。 這樣您就不必花費額外的時間為您進行的每個查詢重新連接。

您現在擁有的看起來不錯,您根本不需要關閉連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM