问题是关于建筑
我有一个模块' 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();
答案 0 :(得分:3)
我认为你会发现不同的意见,但我更喜欢require
我需要的地方。节点中的modules
是单例,因此您始终获得相同的实例。我喜欢将我的控制器逻辑分离到远离路由的自己的文件中。而且逻辑不期望完整的请求和响应对象。原因是我可以使用相同的代码来获取服务API端点所需的数据,或者渲染视图服务器端而不需要模拟整个请求和响应对象。