我希望你能帮助我设计一个在我的node.js应用程序中创建数据库连接的设计模式。
很显然可以这样做:
模块1:
var db;
exports.get_db = function(callback) {
if (db == null) {
dblibrary.create(connection_params, function(error, conn) {
if (error == null) {
db = conn;
callback(null, db);
}
});
} else {
callback(null, db);
}
};
模块2:
exports.do_something = function () {
module1.get_db(function (err, conn) {
if (err == null) {
// continue using query
}
});
};
似乎对于每个想要获取数据库连接的人都要求使用回调函数进行惩罚是很痛苦的。
我可以这样做:
模块1:
var db;
dblibrary.create_connection(connection_params, function (err, conn) {
if (err != null) {
console.log("can't create connection");
console.log(err);
process.exit();
} else {
db = conn;
}
});
exports.get_db = function() {
return db;
};
这样做使得获取数据库连接变得简单快捷,但也意味着我们必须在节点启动时“等待”连接建立。
哪种设计更好?是否有更好的方法?
var
定义一个变量但没有赋值时,你会得到一个undefined
而不是null
,所以在这段代码中你总是会得到undefined
。 - alphakevin