我使用的是Sequelize和hooks (请看这里:https://github.com/sequelize/sequelize/pull/894)。我正在尝试实现一种日志系统,并且更喜欢在钩子上而不是在我的控制器中进行日志记录。有没有人知道如何让我的用户从req.user进入我的钩子函数?
db.define('vehicle', {
...
}, {
hooks: {
beforeUpdate: function(values, cb){
// Want to get my user in here.
}
}
});
发布于 2018-05-31 18:20:04
我在我的项目中使用了一个简单的解决方案。
1)首先,当您创建或更新任何模型时,在选项参数中传递数据,如下所示:
model.create({},{ user: req.user}); // Or
model.update({},{ user: req.user});
2)然后,访问钩子中的数据
User.addHook("afterUpdate", function(instance, options){
console.log(' user data', options.user);
});
发布于 2014-09-20 01:52:01
如果用户和车辆之间存在一对多关系,并且车辆实例已经与用户关联,则可以使用vehicle.getUser()。
...
beforeUpdate: function(vehicle,cb){
vehicle.getUser()
.then(function(user){
console.log(user)
})
}
vehicle的属性之一是否为uid。
beforeUpdate: function(vehicle,cb){
User.find(vehicle.uid)
.then(function(user){
console.log(user)
})
}
否则,这将不得不在控制器中完成。但是,有没有很好的理由不在控制器中处理这个问题呢?在Vehicle上创建一个名为logUser()并接受req.user的类方法似乎是阻力最小的方法。
https://stackoverflow.com/questions/19681970
复制相似问题