如何多次打开/关闭mysql连接?

时间:2018-11-01 23:39:24

标签: mysql node.js

我正在使用带有mysql的节点,并且有一条路由可以做到:

const mysql = require("./mysql");
router.post("/register_user", (req, res) => {
   mysql.register(req.body).then((result) => {
      // stuff
   });
});

mysql.js:

const mysql = require("mysql");
const connection = mysql.createConnection("mysql://...");

exports.register = (req) => {
    const user = { name: req.name };
    return new Promise((resolve, reject) => {
       // make sure user doesn't exist already
       connection.query('...', [user], (err, data) => {
         ...

         if (isNewUser) {
           connection.query('INSERT INTO USER...', user, (insertErr, rows) => {
             ...
             resolve(rows);
             connection.end();
           }
         }
       });
    });
}

当我在我的应用程序中注册第一个用户时,这非常有效。但是之后,如果我注销(在Web应用程序上),然后注册一个新用户,则会收到一条错误消息:

Error: Cannot enqueue Query after invoking quit.

为什么不创建新连接?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用以下NPM模块mysql 如果是这种情况,那么您可以简单地使用MySQL pooling connections吗?

  

该模块不是一个接一个地创建和管理连接,而是使用mysql.createPool(config)提供内置的连接池。

因此,您将调用connection.end();而不是调用connection.release();,而是将连接返回到打开的连接池中。