Javascript 使用init方法的Simple node.js模块
我正在尝试为node.js整理一个好的简单模式,使用init方法在连接到mongodb集合时使用“models”。基本上,每个集合都有一个“模型” 以下是我所拥有的,设置为单例,有没有理由不使用此方法,或者在节点上下文中有没有更推荐的方法Javascript 使用init方法的Simple node.js模块,javascript,node.js,Javascript,Node.js,我正在尝试为node.js整理一个好的简单模式,使用init方法在连接到mongodb集合时使用“models”。基本上,每个集合都有一个“模型” 以下是我所拥有的,设置为单例,有没有理由不使用此方法,或者在节点上下文中有没有更推荐的方法 module.exports = User; function User () { if ( arguments.callee.instance ) { return arguments.callee.instance; } else {
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();
谢谢大家! 嗯,你应该把User.prototype.method
User.prototype.findOne = function (user_id) {
}
User.prototype.addUser = function () {
}
您的意思可能不是“返回新用户()”
module.exports = new User();
不导出“新”用户()的一个原因是,如果要在nodejs程序中创建多个用户。如果您只有一个用户,那么单例就可以了。此外,如果您希望将数据传递到此模块,您可能希望通过构造函数参数来传递数据,如果您仅在模块中构造用户,则无法在应用程序中传递给构造函数
我使用一种模式将module.exports分配给函数。“所有我的导出”的第一个参数是在所有导出之间共享的对象,因此它们可以添加事件/侦听器,并以各种不同的方式相互对话
例如(“事件”和“应用程序”是虚拟的,不基于任何真实的API)
现在,所有其他模块都可以通过
app.events.login({'user': '..','pass': '..'});
谢谢,这些都是好的观点。我认为对于这个,只有一个“用户”对象。它不完全是一个“模型”,而是一个用于处理数据库的访问层。
app.events.login({'user': '..','pass': '..'});