Sequelize获取请求数据的钩子?

我正在尝试在创build,更新,删除调用时为我的模型存储一些日志数据。 我想在请求中存储一些来自请求的数据以及一些用户数据(使用express.js)。

在钩子我有一些模块logging。

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]); } } ... 

该模块只是在一个表中logging。 然而,这是我遇到的userId部分。 我正在使用passport模块,它存储在请求,所以我怎么能得到一个用户对象(或任何外部对象)到模型钩子?

我想避免在控制器或其他任何地方执行它,因为可能有一些脚本或其他命令也可能input数据。

我也遇到了类似的问题,我自己解决如下:

首先:我宣布了一个全球(通用)钩子:

 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]); }); 

然后,在调用模型之前,使用挂钩( beforeCreatebeforeBulkUpdate ,…)和分配的参数请求

 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。

另外,你还必须为每个模型声明钩子。 在这里查看更多信息。