gpt4 book ai didi

javascript - 用于创建数据库连接一次的 node.js 设计模式

转载 作者:IT老高 更新时间:2023-10-28 23:10:56 25 4
gpt4 key购买 nike

我正在寻求有关在我的 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;
};

这使得获取数据库连接变得简单而快速,但这意味着我们必须在 Node 启动时“等待”才能建立连接。

哪个设计更好?有没有更好的做事方式?

最佳答案

mydb.js 模块:

var db
exports.db = function() {
if (db === null) {
db = dblibrary.createClient()
}
return db
}

其他模块:

var db = require('mydb').db()
...
db.query(...)

这会在启动时创建一次数据库客户端实例。我喜欢这个解决方案,因为创建代码被封装在一个单独的模块中,其他模块可以通过一个 require() 语句访问客户端。

关于javascript - 用于创建数据库连接一次的 node.js 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6275643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com