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 端点提供服务或在服务器端呈现视图所需的数据,而无需模拟整个请求和响应对象。
问题是关于架构的。
我得到了一个模块 '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 端点提供服务或在服务器端呈现视图所需的数据,而无需模拟整个请求和响应对象。