Javascript 在钩子中继续获取请求数据?

Javascript 在钩子中继续获取请求数据?,javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,我试图在创建、更新和删除调用时存储一些模型的日志数据。我想将请求中的一些数据以及一些用户数据存储在请求中(使用express.js) 在hook中,我有一些用于日志记录的模块 hooks: { afterCreate: function (order, options, done) { // How to get user data stored in express request. return app.log.set('event', [{mess

我试图在创建、更新和删除调用时存储一些模型的日志数据。我想将请求中的一些数据以及一些用户数据存储在请求中(使用express.js)

在hook中,我有一些用于日志记录的模块

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
模块,它存储在请求中,因此如何将用户对象(或任何外部对象)获取到模型挂钩中


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

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

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

然后,在调用模型之前,使用调用挂钩(
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
        });
   }
};
订单钩子调用:
模型中的钩子声明
→ 钩1→ 钩2`

此外,还必须为每个模型声明挂钩。

虽然传递
req
是一个有效且透明的解决方案,但我发现仅仅为了记录而这样做既奇怪又烦人。您可能希望签出continuation local storage()来存储数据,以便每个
logger.log
函数都可以访问调用它的任何地方。从理论上讲,它应该有效,但在实践中——从未尝试过。
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
        });
   }
};