所以我正在将我的 express 应用分成模块,我有一个问题。
目前我的 app.js 包含:
var db = module.exports.db = require('./helpers/db')(app.set('database'))
模型文件包含:
var DB = require('../app').db;
看完This , 看起来构建模块的一种方法是导出应用程序并从模块中 require app,然后直接 require 该模块。
这意味着在我的 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 对象的实例。这减少了耦合并使注入(inject)模拟数据库对象以进行测试变得更加容易。
关于database - Node.js 在 app.js 中导出模块与在单个模块中包含 app.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066908/