我可以使用以下方法轻松地将我的快速配置中的新连接附加到数据库:
global.db = new DB.adapter({});
因此,我可以在任何我希望创建的模型中访问它。 (我使用active record和mysql with express)。
然而,这是否以任何方式a)不安全,b)不良做法?
答案 0 :(得分:2)
我认为这不安全,但一般使用全局变量是不好的做法:
相反,只使用内置于节点中且易于使用的CommonJS要容易得多。
// db.js
module.exports = new DB.adapter({});
//index.js
var db = require("./db");
答案 1 :(得分:2)
两个
不安全:任何模块都可以更改全局上下文。与任何其他软件包存储库一样,NPM中可能存在邪恶的程序员。
糟糕的做法:有些测试框架甚至将此视为错误(例如,Mocha,但这是可配置的)。你在CommonJS环境中,所以使用模块!这样做,require()
该模块就不会丢失您的连接对象,我知道这一点。