database - Node.js 在 app.js 中导出模块与在单个模块中包含 app.js

标签 database node.js express

所以我正在将我的 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/

相关文章:

android - 将数据列表推送到 firebase 不起作用

node.js - TLS/证书(SMTP)的 Nodemailer 问题

node.js - 如何获取 Node.js 导入的类型

Expressjs 4 中的 Mongodb session 存储

javascript - 如何使用POST方法感知和访问参数

android - 更新行时 SQLite 数据库游标错误

php - 如何处理我的 PHP 模型的 n-m 关系?

java - 如何更新 Derby 数据库的版本

arrays - 搜索包含项目数组的项目等node.js

javascript - 如何修复 KeystoneJS 项目中的错误 "_helpers.pageUrl is not a function:"?