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]); });
然后,在调用模型之前,使用挂钩( 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。
另外,你还必须为每个模型声明钩子。 在这里查看更多信息。