Javascript 在钩子中继续获取请求数据?
我试图在创建、更新和删除调用时存储一些模型的日志数据。我想将请求中的一些数据以及一些用户数据存储在请求中(使用express.js) 在hook中,我有一些用于日志记录的模块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
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
});
}
};