我正在尝试在创建,更新和删除调用时为我的模型存储一些日志数据。我想在请求中存储请求中的一些数据以及一些用户数据(使用express.js)。
在钩子中我有一些用于记录的模块。
hooks: {
afterCreate: function (order, options, done) {
// How to get user data stored in express request.
return app.log.set('event', [{message: 'created', data: order, userId: 1}, done]);
}
}
...
模块只是在表格中记录。然而,这是我遇到麻烦的userId
部分。我正在使用passport
模块并将其存储在请求中,那么如何将模型挂钩中的用户对象(或任何外部对象)获取?
我希望避免在控制器或其他任何地方执行此操作,因为可能存在一些脚本或其他可能也会输入数据的命令。
答案 0 :(得分:1)
我也遇到过类似的问题,我自己解决了这个问题:
首先:我宣布了一个全局(通用)钩子:
module.exports = sequelize.addHook('beforeCreate',
function(model, options, done) {//hook 2
//handle what you want
//return app.log.set('event', [{message: 'created', data: order, userId: 1}, done]);
});
然后,在调用模型之前,使用调用挂钩(beforeCreate
,beforeBulkUpdate
,...)并分配参数请求
module.exports = {
CreateUser: function(req, res) {
User.beforeCreate(function(model, options, done) {//hook1
model.request = req;
});
User.create({
id: 1,
username: 'thanh9999',
password: '31231233123'
//ex.....
})
.then(function(success) {
//response success
}, function(err) {
//response error
});
}
};
命令挂钩调用:hook declaration in model
→挂钩1→挂钩2`。
此外,您还必须为每个模型声明挂钩。 See more information here.