Database Node.js在app.js中导出模块与在单个模块中包含app.js
因此,我正在将我的express应用程序分为几个模块,我有一个问题 当前我的app.js包含:Database Node.js在app.js中导出模块与在单个模块中包含app.js,database,node.js,express,Database,Node.js,Express,因此,我正在将我的express应用程序分为几个模块,我有一个问题 当前我的app.js包含: var db = module.exports.db = require('./helpers/db')(app.set('database')) 和模型文件包含: var DB = require('../app').db; 在阅读之后,构建模块的一种方法似乎是导出应用程序,并从模块内部请求应用程序,然后直接请求该模块 这意味着在我的db.js中我需要require(“../app”),在我的模
var db = module.exports.db = require('./helpers/db')(app.set('database'))
和模型文件包含:
var DB = require('../app').db;
在阅读之后,构建模块的一种方法似乎是导出应用程序,并从模块内部请求应用程序,然后直接请求该模块
这意味着在我的db.js中我需要require(“../app”),在我的模型中我需要db=require('db')
当前db.js返回mysql连接的新实例:
module.exports = function(settings) {
return new MysqlDB(settings);
}
我认为将module.exports.db移出app.js并在每个模型中直接要求db.js会创建多个连接实例,这是错误的吗
我自己写这篇文章有点困惑,所以请告诉我在哪里可以改进这个问题欢迎任何和所有提示,我真的很想更好地了解这一切
谢谢 我倾向于将需求推入模块,而不是模块必须知道从何处获取db对象的实例。这减少了耦合,并且更容易为测试目的注入模拟db对象。很棒的技巧,只是对它的工作原理有点困惑。目前我有app.js require routes,routes文件需要一组控制器,并将url映射到正确的方法。在控制器中,我包含模型文件,我不认为我会将db从控制器传递到模型文件,对吗?(这似乎也与你的建议背道而驰)只是不确定我会把逻辑放在哪里