0

我正在尝试使用 init 方法为 node.js 整理一个很好的简单模式,以便在连接到 mongodb 集合时使用“模型”。基本上,每个集合都有一个“模型”。

这就是我所拥有的,设置为单例,有什么理由不使用这种方法,或者在节点的上下文中是否有更多推荐的方法?

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();

谢谢!

4

1 回答 1

1

嗯,你应该把User.prototype.method。

User.prototype.findOne = function (user_id) {

}

User.prototype.addUser = function () {

}

您可能的意思不是“返回新用户()”,

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': '..'});
于 2013-03-23T18:34:32.613 回答