我正在尝试使用init方法为node.js找到一个很好的简单模式,以便在连接到mongodb集合时使用'models'。基本上,每个系列都有一个“模型”。
这就是我所拥有的,设置为单身,任何不使用此方法的原因,或者在节点的上下文中是否有更多推荐的方法?
module.exports = User;
function User () {
if ( arguments.callee.instance ) {
return arguments.callee.instance;
} else {
arguments.callee.instance = this;
}
//Init our database collection
}
User.findOne = function (user_id) {
}
User.addUser = function () {
}
return new User();
谢谢!
答案 0 :(得分:1)
User.prototype.findOne = function (user_id) {
}
User.prototype.addUser = function () {
}
而不是'返回新用户()',你可能意味着,
module.exports = new User();
导出“新”User()的不的一个原因是,如果要在nodejs程序中创建多个用户。如果你只有一个用户,那么单身就可以了。此外,如果要将数据传递给此模块,您可能希望通过构造函数参数执行此操作,如果只在模块中构造用户,则无法传递到应用程序中的构造函数。
我使用的模式将module.exports分配给一个函数。我所有导出的第一个参数是在所有导出中共享的对象,因此他们可以添加事件/侦听器并以各种不同的方式相互通信。
例如('events'和'app'是伪造的,不是基于任何真正的API),
function doLogin(app) {
return function (e) {
// some code to do login
}
}
module.exports = function login (app) {
app.events.on('login', doLogin(app));
}
现在所有其他模块都可以通过
触发登录app.events.login({'user': '..','pass': '..'});