如何将模型方法添加到用户会话?
How do I add a model method to the user session?
我有一个 User
模型,我正在使用 Passport.js,在 Sails.js.使用此设置,req.user
returns 当前用户会话详细信息,如 req.user.username
returns "Jimmy",用于 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');
时获得该用户所需的设置值?
否则,我如何轻松访问用户的设置?我有一个与 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;
但是不能直接return这个值的问题仍然存在,需要将它作为参数传递给回调函数。
我有一个 User
模型,我正在使用 Passport.js,在 Sails.js.使用此设置,req.user
returns 当前用户会话详细信息,如 req.user.username
returns "Jimmy",用于 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');
时获得该用户所需的设置值?
否则,我如何轻松访问用户的设置?我有一个与 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;
但是不能直接return这个值的问题仍然存在,需要将它作为参数传递给回调函数。