Sequelize 在钩子中获取请求数据?

Sequelize get request data in hooks?

我正在尝试为我的模型存储一些关于创建、更新、删除调用的日志数据。我想在请求中存储一些来自请求的数据以及一些用户数据(使用 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]);
    }
}
...

模块只是在table中做记录。但是,这是我遇到麻烦的 userId 部分。我正在使用 passport 模块并将其存储在请求中,那么如何将用户对象(或与此相关的任何外部对象)获取到模型挂钩中?

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

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

首先:我声明了一个全局(通用)钩子:

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`。

此外,您还必须为每个模型声明钩子。 See more information here.