【问题标题】:Node.Js - no output from mysql connectionNode.Js - mysql连接没有输出
【发布时间】:2016-08-03 16:08:07
【问题描述】:

抱歉-第一次使用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:

这里是安装的模块:

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

我还尝试以sudo 运行节点,还尝试运行nodejs index.js 而不是node index.js。哦,我还尝试安装和使用nodejs-mysql 模块而不是mysql。似乎没有任何效果。

【问题讨论】:

    标签: mysql node.js node-mysql


    【解决方案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 等数据库包装器使用,以保持您的代码井井有条。

    【讨论】:

    • 这似乎解决了这个问题。但是,我不能使用你的方法。作为第一步 - 我应该从 mysql 数据库中收集数据。作为第二步 - 我应该使用数据进行计算......所以按照要求 - 在我的初始代码中打印“4”之前应该已经执行查询。我将在nodejs 中查看promises,看看可以做什么。但是你给了我正确的想法,所以我很感谢你!
    • 这里最重要的是要记住,传入异步调用的function不会立即执行,而是稍后执行。这意味着在触发该函数后需要执行的任何内容都必须在最后放入该函数中。 Promise 允许使用 then 方法进行链接,这使得它更明确且更易于遵循。
    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2018-05-28
    • 2014-06-13
    相关资源
    最近更新 更多