首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >序列化钩子,有没有办法得到Express的用户?

序列化钩子,有没有办法得到Express的用户?
EN

Stack Overflow用户
提问于 2013-10-30 20:14:39
回答 2查看 4.1K关注 0票数 6

我使用的是Sequelize和hooks (请看这里:https://github.com/sequelize/sequelize/pull/894)。我正在尝试实现一种日志系统,并且更喜欢在钩子上而不是在我的控制器中进行日志记录。有没有人知道如何让我的用户从req.user进入我的钩子函数?

代码语言:javascript
复制
db.define('vehicle', {

    ...

}, {
    hooks: {
        beforeUpdate: function(values, cb){

            // Want to get my user in here.

        }
    }
});
EN

回答 2

Stack Overflow用户

发布于 2018-05-31 18:20:04

我在我的项目中使用了一个简单的解决方案。

1)首先,当您创建或更新任何模型时,在选项参数中传递数据,如下所示:

代码语言:javascript
复制
model.create({},{ user: req.user}); // Or
model.update({},{ user: req.user});

2)然后,访问钩子中的数据

代码语言:javascript
复制
User.addHook("afterUpdate", function(instance, options){
    console.log(' user data', options.user);
});
票数 5
EN

Stack Overflow用户

发布于 2014-09-20 01:52:01

如果用户和车辆之间存在一对多关系,并且车辆实例已经与用户关联,则可以使用vehicle.getUser()。

代码语言:javascript
复制
...
beforeUpdate: function(vehicle,cb){
  vehicle.getUser()
  .then(function(user){
    console.log(user)
  })
}

vehicle的属性之一是否为uid。

代码语言:javascript
复制
beforeUpdate: function(vehicle,cb){
  User.find(vehicle.uid)
  .then(function(user){
    console.log(user)
  })
}

否则,这将不得不在控制器中完成。但是,有没有很好的理由不在控制器中处理这个问题呢?在Vehicle上创建一个名为logUser()并接受req.user的类方法似乎是阻力最小的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19681970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档