提问者:小点点

如何从node.js模块返回\retrieve一个查询MySQL的结果?


我想把一个结果从mysql查询传递到上面的级别。。。

我有这个模块:mysqlconnect.js:

var connection = require('mysql').createConnection({
  host : 'localhost',
  user : 'admin',
  password : ''
});

exports.querySelect = querySelect;

function querySelect(query){
    var result = connection.query(query, function(err, rows){
                           return (rows[0]);
                 });
    return result;
}

并且当我从外部调用这个函数时,让我们从app.js说:

var DBconnector = require('mySQLconnect');    
var result = DBconnector.querySelectUser("SELECT * FROM TB_USERS");

但是我得到的结果是其他的--它是来自mysql.js模块的一个对象,从以下位置接收:

Connection.query(查询,函数(错误,行)

它有:_resultset=null,unreachable_results=[Array]

所以没有好处。。。

我签入了node-mysql网站,但没有找到connection.query返回的内容。

我怎样才能通过考试呢?


共1个答案

匿名用户

您正在用过程函数包装对DB的异步调用--对于来自PHP等过程语言的nodejs初学者来说,这是一个常见的错误。

您可以将mysqlconnect.js模块简化为以下内容:

var connection = require('mysql').createConnection({
  host : 'localhost',
  user : 'admin',
  password : ''
});

exports.querySelect = connection.query;

然后这样消耗它:

var DBconnector = require('mySQLconnect');
DBconnector.querySelect("SELECT * FROM TB_USERS", function (err, rows) {
  console.log(err || rows);
});

我将阅读回调,匿名函数和异步流模式,以帮助您熟悉这种新的编码风格。祝你好运!