如何将模型方法添加到用户会话?
我有一个User
模型,我在Sails.js中使用Passport.js 。 通过这个设置, req.user
返回当前用户会话的详细信息,如req.user.username
返回“Jimmy”,用于Jimmy的会话。
我觉得这非常方便布局的目的,我也想添加一个方法,find用户设置,可通过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文档 ,结果发现他们使用另一种方法来创build模型,所以我正在重写我的答案。
你想要的是属性方法 ,所以你需要在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;
但是不能直接返回值的问题仍然存在,您需要将其作为parameter passing给callback函数。