Nodejs和MySQL

时间:2015-09-01 11:47:09

标签: mysql node.js

据我所知,由于非阻塞I / O理论,一切都应该在回调中。

所以我很困惑,例如felixge/node-mysql

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0].solution);
});

connection.end();

但我认为这是错误的例子,因为.end()可能在连接建立之前发生。

有些人可以给我正确的例子来连接,查询和结束mysql连接。

connection.connect(function(err) {
    if (err) {
        console.error('error connecting: ' + err.stack);
        return;
    }

    // As I understand every "query" should happen here
});

2 个答案:

答案 0 :(得分:4)

mysql模块内部有一个查询队列,在连接时处理。调用.end()后,只有在队列为空时才会结束连接。

此外,.connect()是不必要的,因为在断开连接时调用.query()会隐式触发连接。

答案 1 :(得分:2)

在您引用的代码的正下方:

  

使用end()关闭连接,确保在将退出数据包发送到mysql服务器之前执行所有剩余的查询。