node.js - 如何将模型方法添加到用户 session 中?

标签 node.js session sails.js models

我有一个 User 模型,并且我在 Sails.js 中使用 Passport.js。通过此设置,req.user 返回当前用户 session 详细信息,如 req.user.username 为 Jimmy 的 session 返回“Jimmy”。

我发现这对于布局目的非常方便,而且我还想添加一个查找用户设置的方法,可通过 req.user 访问。

到目前为止,我的方法(在 User 模型内部)如下所示:

  getSetting: function(code) {

        UserSettings.find({ where: { user: req.user.id, code: code } }).exec(function(err, setting) {
            return setting.value;
        });

  }

如何才能通过 req.user 访问此方法,以便当我执行 req.user.getSetting('TEST_CODE'); 时,我可以获得所需的设置对于该用户的值(value)?

否则,我如何轻松访问用户的设置?我有一个与 User 模型关联的 UserSettings 模型。

编辑:

我拥有的用户模型:

var User = {

  schema: true,

  attributes: {
    username  : { type: 'string', unique: true },
    email     : { type: 'email',  unique: true },
    passports : { collection: 'Passport', via: 'user' },
    settings  : { collection: 'UserSettings', via: 'user' }
  },

  getSetting: function(code) {

        UserSettings.find({ where: { user: req.user.id, code: code } }).exec(function(err, setting) {
            return setting.value;
        });

  }

};

module.exports = User;

谢谢。

最佳答案

好的,我已经查看了 Sail.js documentation事实证明他们使用另一种方法来创建模型,所以我正在重写我的答案。

你想要的是 attribute method ,因此您需要在 attributes 键中定义函数:

var User = {

  schema: true,

  attributes: {
    username  : { type: 'string', unique: true },
    email     : { type: 'email',  unique: true },
    passports : { collection: 'Passport', via: 'user' },
    settings  : { collection: 'UserSettings', via: 'user' },

    getSetting: function(code, cb) {

          UserSettings.find({ where: { user: this.id, code: code } }).exec(function(err, setting) {
              cb(setting.value);
          });

    }
  }

};

module.exports = User;

但是无法直接返回值的问题仍然存在,您需要将其作为参数传递给回调函数。

关于node.js - 如何将模型方法添加到用户 session 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29184778/

相关文章:

java - 在登录类的共享首选项中保存字符串以在 MainActivity 中使用 - 无法引用定义的非最终局部变量编辑器

javascript - Sails JS - 添加文档并在响应中返回整个集合

javascript - SailsJS V1 - 蓝图查询无法正常工作

node.js - Node 和 npm 已安装,但 Git bash 无法识别 'node' 内的 'npm run dev'(其他 shell 工作正常)

javascript - 如何使用node.js 0.12在OSX Yosemite上正确安装node-inspector?

javascript - 在 node.js javascript 为什么我不能添加到子函数?

php - node-mongodb-native 的插入性能

php - 使用 session 的多步注册表 PHP/MySql

php - 为什么我无需使用 php cURL 发送用户名和密码就可以访问管理面板

node.js - sails .js : use i18n in my controller