如何使用promises来处理MySQL连接NodeJS?

igsr9ssn  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(113)

我正在使用NodeJS和MySQL服务器为一个学校项目开发一些东西,我试图创建一个 Package 函数来处理连接,然后使用回调来调用我需要使用的任何其他函数,但是我在执行处理程序中的前两个函数时遇到了问题,然后在关闭连接之前等待回调完全执行。我该如何做呢?
我收到的错误是“Error:当连接处于关闭状态”时,无法添加新命令.

let mysql = require('mysql2');
let con = mysql.createConnection({
    host: '',
    user: '',
    password: ''
})

function connectionHandler(_callback) {
    con.connect(function (err) {
        if (err)
            throw err;
        console.log('Connected!');
    });

    con.query('USE test', function (err) {
        if (err)
            throw err;
    });

    _callback;

    con.end(function (err) {
        if (err)
            throw err;
    });
}

function addOrder() {
    con.query('INSERT INTO orders', function (err) {
        if (err)
            throw err;
    });
}

connectionHandler(addOrder());
2hh7jdfx

2hh7jdfx1#

如果您想使用回调,请尝试更改您的逻辑,如下所示:

let mysql = require('mysql2');

let con = mysql.createConnection({
  host: '',
  user: '',
  password: '',
  database: 'test'
});

function connectionHandler(_callback, dbName = 'test') {
    con.connect(function (err) {
        if (err) throw err;

        con.query('USE ?', [dbName], function (err) {
            if (err) throw err;
        
            _callback();
        
            con.end(function (err) {
              if (err) throw err;
            });
          });
    })
}

function addOrder() {
  con.query('INSERT INTO orders', function (err) {
    if (err) throw err;
  });
}

connectionHandler(addOrder(), 'test');

相关问题