Node.Js - 没有mysql连接的输出

时间:2016-08-03 16:08:07

标签: mysql node.js node-mysql

提前抱歉 - 第一次使用nodejs ..

我在linux机器上安装了nodejsnpm经理。通过npm我安装了mysql模块,现在我尝试使用简单代码测试mysql连接。问题是 - 当运行mysql相关代码时,没有输出打印到控制台!

源:

var mysql = require("mysql");

console.log('1');

var connection = mysql.createConnection({
  host: "127.0.0.1",
  user: "xxx",
  password: "xxxx",
  database: "xxx",
  port: 3306

});

console.log('2');

connection.connect(function(err){
    if(err){
        console.log('Error connecting to Db');
        return;
    }

    console.log('Connection established');
});

console.log('3');

connection.end(function(err) {
    console.log('Connection closed');
});

console.log('4');

process.exit();

输出为1234:

enter image description here

以下是已安装的模块:

enter image description here

所以我的问题是 - 为什么没有来自mysql连接的消息?我故意故意输入错误的连接细节 - 没有生成任何消息。

我还尝试将节点作为sudo运行,并尝试运行nodejs index.js而不是node index.js。哦,我还尝试安装并使用nodejs-mysql模块而不是mysql。似乎没什么用。

1 个答案:

答案 0 :(得分:1)

您正在编写异步代码,因此在强制终止进程之前,您需要等待才能完成这些操作。

你实际上说的是“做这个,做到这一点,做到这一点,然后再回到我身边。现在也关掉一切。”

删除process.exit来电或将其移至回调函数中,以便在合适的时间触发:

var connection = mysql.createConnection({
  ...
});

console.log('2');

connection.connect(function(err){
  if(err) {
    console.log('Error connecting to Db');
    return;
  }

  console.log('Connection established');

  console.log('3');

  connection.end(function(err) {
    console.log('Connection closed');
    console.log('4');

    process.exit();
  });
});

这种积极的嵌套和重新嵌套是promises之类存在的原因。 Bluebird是一个很好的库,用于实现和使用它们,并由Sequelize等数据库包装器使用,以保持代码的有序性。