我有一个User
模型,我在 Sails.js 中使用 Passport.js 。通过此设置,req.user
返回当前用户会话详细信息,如req.user.username
返回“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');
时获得该用户所需的设置值?
或者,我怎样才能轻松访问用户的设置?我有UserSettings
模型与User
模型相关联。
编辑:
我拥有的用户模型:
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;
感谢。
答案 0 :(得分:1)
好的,我查看了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;
但是无法直接返回值的问题仍然存在,您需要将其作为参数传递给回调函数。