节点js,需要到处或者为req添加属性

时间:2016-04-08 22:31:41

标签: node.js mongodb node-modules

问题是关于建筑 我有一个模块' db',它建立了与mongodb的连接,并且有一个包含模式,模型等的类。我输出该类的示例。
我应该只在每个路径文件中要求(' 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();

1 个答案:

答案 0 :(得分:3)

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