【发布时间】:2013-05-08 21:09:31
【问题描述】:
我开始使用异步编程,我正在制作一个 nodejs 应用程序,我已经在一些文件中切片了代码:index.js、ctlUser.js、DAO.js 等... .. Index.js 是主要的文件需要 ctlUser 和 ctlUser 需要 DAO.js...DAO 连接到数据库并执行查询...
抽象一下,我的结构是这样的……
索引.js
var ctlUser = require('./ctlUser.js');
var username = ctlUser.getUserName('1');
console.log("Return from ctlUser" + username);
ctlUser.js
var DAO = require('./DAO.js');
var getUserName = function(id){
var userName = DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id );
console.log(Return from DAO = userName);
return username;
}
这里的 DAO.js 一切正常...
var mysql = require('mysql');
var executeQuery = function(query) {
var connection = mysql.createConnection({
host : SERVER,
user : USER,
password : PASSWORD,
database : DATABASE
});
connection.connect();
connection.query(query, function(err, rows, fields) {
if (err) throw err;
connection.end();
console.log("Here in DAO: " + rows[0].username);
return rows[0].username;
});
};
$ node index.js 的输出为:
Return of ctlUser: undefined
Return of DAO: undefined
Here in DAO: Filipe Tagliacozzi
我将所有模块导出都抽象化,对于固定变量,一切都可以正常工作,但对于数据库响应则不行。如何在此结构中实现回调以将用户名带到 index.js?
【问题讨论】:
标签: javascript node.js asynchronous callback