【发布时间】:2018-02-16 14:17:40
【问题描述】:
在我的带有 mongodb.js 的 Node.js 项目中(注意,不是 mongoose)我有以下结构:
- index.js
- 设置数据库连接 (db.js)
- 设置快递服务器(api.js)
- api.js
- 启动服务器
- 定义路由并调用 db (db.js)
- database.js
- 启动db连接,db在文件中定义为全局
- 每个 db 函数都使用全局 db 变量
大概是这样的:
// database.js
let db;
module.exports = {
connect() {
db = set value here;
},
findUser() {
db.find(query);
}
};
现在我想将每个 db 函数重组为它自己的文件夹,如 database/user.js,但我不确定如何使用单独的文件处理全局 db var?
// database/users.js
module.exports = {
findUser() {
db.find(query); <-- how to pass the db connection
}
};
我想避免将 db 作为参数传递给所有函数。构建这个的常用方法是什么?
【问题讨论】:
-
您可以从this project 获得一些想法。查看路由、控制器和模型的结构。
-
那是mongoose项目,所以db连接隐藏在mongoose模型后面。我只使用 mongodb.js
-
将数据库作为参数传递给所有函数有什么问题?导入时只需传递一次:
const findUser = require('users.js')(db) -
按照 RahphMex 的建议使用依赖注入,或者为您的数据库连接创建单例并使用它。