Node js, require 无处不在或者添加一个 属性 到 req

Node js, require everywhere or add a property to req

问题是关于架构的。
我得到了一个模块 'db',它建立了与 mongodb 的连接,并且有一个带有模式、模型等的 class。我导出了那个 class 的范例。
我应该只在每个路由文件中要求('db')还是只在一个路由文件中执行此操作:

server.on('request', function(req) {
  req.db = db;
});

db.js:

"use strict";
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var conn = mongoose.connection;
conn.on('error', console.error.bind(console, 'connection error:'));
conn.once('open', function() {
  console.log("Connected to MongoDB.");
});

class db {
  constructor() {
    //Users
    this._usersSchema = mongoose.Schema(
      {
        username: String,
        password: String,
        email: String
      });
    this.Users = mongoose.model("Users", this._usersSchema);
  }
}

module.exports = new db();

我想你会发现不同的意见,但我更喜欢 require 我需要的地方。 modules 在 node 中是单例,所以你总是得到相同的实例。而且我喜欢将我的控制器逻辑从路由中分离到它们自己的文件中。此外,逻辑不期望完整的请求和响应对象。原因是我可以使用相同的代码来获取为 API 端点提供服务或在服务器端呈现视图所需的数据,而无需模拟整个请求和响应对象。