Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用init方法的Simple node.js模块_Javascript_Node.js - Fatal编程技术网

Javascript 使用init方法的Simple node.js模块

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 {

我正在尝试为node.js整理一个好的简单模式,使用init方法在连接到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();

谢谢大家!

嗯,你应该把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': '..'});