Node.js 在express/Node中使用mysql:使用globals可以吗?
我可以很容易地使用以下方法将express配置中的新连接连接到数据库:Node.js 在express/Node中使用mysql:使用globals可以吗?,node.js,activerecord,express,Node.js,Activerecord,Express,我可以很容易地使用以下方法将express配置中的新连接连接到数据库: global.db = new DB.adapter({}); 因此,我可以在我希望创建的任何模型中访问它。(我正在与express一起使用和mysql) 然而,这在某种程度上是不是a)不安全,b)坏习惯 我不认为这是不安全的,但通常使用globals是不好的做法: 包括不需要的DB global模块。没什么大不了的,但是有点不干净 将特定DB实例与确实需要它的模块紧密耦合。 使测试更加困难 使更改特定模块的不同DB变得
global.db = new DB.adapter({});
因此,我可以在我希望创建的任何模型中访问它。(我正在与express一起使用和mysql)
然而,这在某种程度上是不是a)不安全,b)坏习惯 我不认为这是不安全的,但通常使用globals是不好的做法:
- 使测试更加困难
- 使更改特定模块的不同DB变得更加困难
// db.js
module.exports = new DB.adapter({});
//index.js
var db = require("./db");
我不认为这是不安全的,但通常使用globals是不好的做法:
- 使测试更加困难
- 使更改特定模块的不同DB变得更加困难
// db.js
module.exports = new DB.adapter({});
//index.js
var db = require("./db");
两者都有
不安全:任何模块都可以更改全局上下文。与其他任何包存储库一样,NPM中可能存在邪恶的程序员
<强>坏实践< /强>:一些测试框架甚至认为这是一个错误(例如,MOCHA,但这是可配置的)。您处于CommonJS环境中,所以请使用模块!这样,当
require()
ing该模块时,您的连接对象就不会丢失,这是我所知道的。两者都有
不安全:任何模块都可以更改全局上下文。与其他任何包存储库一样,NPM中可能存在邪恶的程序员
<强>坏实践< /强>:一些测试框架甚至认为这是一个错误(例如,MOCHA,但这是可配置的)。您处于CommonJS环境中,所以请使用模块!这样,当
require()
ing该模块时,您的连接对象就不会丢失,这是我所知道的