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/

相关文章:

operating-system - 为什么 DMBSes 不能依赖操作系统缓冲池?

c# - 社交对象 - 数据库结构、过滤、排序、可扩展性的最佳实践

database - 是否有强大的时序数据数据库系统?

node.js - Mongoose - 使用 .populate 访问嵌套对象

javascript - 在 "Unique Morse Code Words"问题中,我在使用 JavaScript 时遇到问题

javascript - 如何将 JSON 对象从快速服务器发送到下一个 js 页面?

函数内的 SQL 查询

javascript - Node.js/Express 异步文件上传

javascript - 为什么 CSS 和 Bootstrap 元素随着 node express server 消失了?

javascript - 使用 socket.io 将数组从服务器发送到客户端