【发布时间】:2015-03-16 14:55:21
【问题描述】:
我正在编写一个多文件 node.js 应用程序,并且我正在使用模块来组织它的功能,如下所示:
var custom_module = require('./module');
它有很多依赖,即MySQL。我不想将 connection 对象作为参数传递给模块中的所有函数(因为它们都需要它),所以我尝试了这样的事情:
// Module
var database = require('mysql');
(function (db) {
var mysqlConn = db.createConnection ({...});
var connection = mysqlConn.connect();
var function moduleFunction (someArgs) {
connection.query('SELECT * FROM ....', function (err, result) {...});
}
}(database);
我收到错误cannot call query method of undefined,基本上该对象尚未初始化/超出范围。
值得注意的是,在调用函数之前模块有时间加载,因为moduleFunction被调用是因为
express.get('/url_here', function (req, res) {
custom_module.moduleFunction(....);
});
在main 脚本中。
有什么方法可以确保connection 对象在调用任何模块函数时已初始化并在范围内?还是我必须每次都初始化它并在回调中将其作为参数传递?
【问题讨论】:
-
我猜
mysqlConn.connect();返回未定义。至少示例中没有使用返回值。你应该可以在mysqlConn上拨打query代替 -
就是这样。非常感谢!
标签: javascript node.js