我正在尝试为node.js整理一个很好的简单模式,它有一个初始化方法,用于在连接到mongodb集合时使用“模型”。基本上,每个集合都有一个“模型”。
这是我所拥有的,设置为单例,有什么理由不使用这个方法,或者在node的上下文中有更多推荐的方法?
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();
谢谢!
发布于 2013-03-23 18:34:33
你应该把User.prototype.method. .。
User.prototype.findOne = function (user_id) {
}
User.prototype.addUser = function () {
}
您的意思可能不是“return new User()”,
module.exports = new User();
不导出'new‘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': '..'});
https://stackoverflow.com/questions/15590427
复制相似问题