我的Sessions
模型的代码如下:
module.exports = {
attributes: {
},
afterCreate: function(value,next) {
next();
}
};
以下Sessions
控制器:
module.exports = {
saveSession: function(res,req) {
console.log('in save');
}
};
我想将值保存到用户的会话afterCreate
如何从我的模型中调用saveSession
函数?我试过Sessions.saveSession()
,但它不起作用。
答案 0 :(得分:1)
我认为您不需要会话模型,直接调用控制器方法不是一个好主意。
我建议您在尝试保存会话时设置req.session
,并在响应该控制器操作时自动保存。
afterCreate
永远无法访问req
,除非您将其传递给我,我不建议这样做。
模式类似于:
{
// …
login: function (req,res) {
User.findOne({
username: req.param('username'),
password: req.param('password')
}).exec(function (err, user) {
if (err) return res.serverError(err);
if (!user) return res.view('/login');
req.session.user = user.toJSON();
return res.redirect('/dashboard');
});
}
// ...
答案 1 :(得分:0)
我认为您希望将值保存到Cookie 或创建另一个数据库记录我是否正确?
如果是这样,你不需要从模型调用控制器动作(不推荐),你只需要创建一个新记录或将值保存到cookie,这里有一些我认为在你的场景中可能的选择。
创建另一条记录:
// on models/YourModel
module.exports = {
attributes: {
},
afterCreate: function(newlyInsertedRecord,next) {
ModelOrResource.create({
param1: newlyInsertedRecord.attributeYouWant,
param2: value2
// and so on
}).exec(function(err, recordCreated){
if(err) return next(err);
// do somethign with recordCreated if you need to
// ...
next();
})
}
};
将值保存到Cookie:
module.exports = {
attributes: {
},
afterCreate: function(newlyInsertedRecord, next) {
// do some other stuff not related to calling a controller action ;)
next();
}
};
这段代码是从我自己项目的片段中重新编写的,所以它应该适用于帆.9.x
希望它有所帮助!