【发布时间】:2012-03-16 19:45:15
【问题描述】:
出于组织目的,我将源代码分成模块,例如,我的 node.js 应用程序中有 user 模块,它负责从 MongoDB 数据库中检索用户信息。我正在做这样的事情:
var mongo = require("mongodb"),
Server = mongo.Server,
Db = mongo.Db;
var server = new Server("localhost", 27017, { auto_reconnect: true });
var db = new Db("users", server);
module.exports = {
login: function(user, pass, callback) {
var reg_result = null;
db.open(function (err, db) {
if(!err) {
db.collection("users", function(err, collection) {
collection.findOne(
{
"username": user,
"password": pass
},
function(err, item) {
if(!err) {
reg_result = item;
} else {
reg_result = "error";
}
}
);
});
} else {
reg_result = "error";
console.log("ERROR: " + err);
}
});
callback(reg_result);
}
}
并像这样在我的测试脚本上执行它:
var user = require("./user.js");
user.log("test", "test", function(msg) {
console.log(msg);
});
它执行数据库操作并检索值,但每次它只返回null,当我不初始化reg_result 变量时它返回undefined。我应该怎么做才能纠正这个问题?
我在user.js 上使用console.log 进行了调试,并输出了item,但我想要回调以便可以在其他来源上使用该项目,例如我的测试脚本
【问题讨论】: