【问题标题】:Node.js exporting modules in app.js vs including app.js in individual modulesNode.js 在 app.js 中导出模块与在单个模块中包含 app.js
【发布时间】:2012-01-30 16:08:47
【问题描述】:

所以我正在将我的 express 应用程序分成模块,我有一个问题。

目前我的 app.js 包含:

var db = module.exports.db = require('./helpers/db')(app.set('database'))

模型文件包含:

var DB = require('../app').db;

在阅读This 之后,构建模块的一种方法似乎是从模块中导出应用程序并要求应用程序,然后直接在路上要求该模块。

这意味着在我的 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 会创建连接的多个实例,我错了吗?

我自己写的有点困惑,所以请让我知道我可以在哪里改进这个问题。 欢迎提供任何和所有提示,我真的很想更好地了解这一切。

谢谢!

【问题讨论】:

    标签: database node.js express


    【解决方案1】:

    我倾向于将需求推送到模块中,而不是模块必须知道在哪里获取 db 对象的实例。这减少了耦合,并且更容易注入模拟数据库对象以进行测试。

    【讨论】:

    • 很好的提示,只是对它的工作原理有点困惑。目前我有 app.js 需要路由,路由文件需要一堆控制器并将 url 映射到正确的方法。在控制器内部我包含模型文件,我不认为我会将数据库从控制器传递给模型文件,对吗? (这似乎也违背了你的建议)只是不知道我会把逻辑放在哪里
    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多