1

我的 nodejs 项目中有 config.js

var mysql  = require('mysql');
var db_name = 'node';
var client = mysql.createClient({
  user: 'root',
  password: 'pass',
});
client.query('USE '+db_name);

我已将其用作项目的配置文件。我如何使用此代码来调用 mysql 查询。

我在 user.js 中有这段代码

var global = require('./config.js');

this.CheckUserValid = function (login, pass) {
    var sql = "SELECT * FROM `user` WHERE login = ? AND pass= ?";
    global.client.query(sql, [login, pass], function selectResutl(err, results, fields) {
        if (!err) return results;
        else
            throw err;
    });
}

TypeError: Cannot call method 'query' of undefined
    at Object.CheckUserValid (C:\wamp\www\Node\user.js:6:19)

有人可以帮助我让我知道如何以更好的方式做到这一点。实际上我过去使用的是 asp.net mvc,所以我已经尝试过了。有人告诉我用 nodejs 编写代码的更好方法吗?

4

1 回答 1

3

当你require()是一个文件/模块时,你得到的结果是模块通过exports属性导出的任何内容。其他任何东西都封装在模块中,无法从外部访问。在您的情况下,config.js您可以在最后添加:

exports.client = client;

这样,无论何时您require()的 config.js 都可以访问它。

这种创建模块的方式在 CommonJS 规范中定义:

编辑:并且由于 commonjs.org 似乎已关闭,这里是另一个链接,其中包含有关此类模块的信息:http: //dailyjs.com/2010/10/18/modules/

于 2012-05-31T04:17:37.840 回答