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]);
});
然后,在调用模型之前,使用调用钩子(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
});
}
};
订购挂钩调用:hook declaration in model
→ 挂钩 1 → 挂钩 2`。
此外,您还必须为每个模型声明钩子。
See more information here.
我正在尝试为我的模型存储一些关于创建、更新、删除调用的日志数据。我想在请求中存储一些来自请求的数据以及一些用户数据(使用 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]);
});
然后,在调用模型之前,使用调用钩子(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
});
}
};
订购挂钩调用:hook declaration in model
→ 挂钩 1 → 挂钩 2`。
此外,您还必须为每个模型声明钩子。 See more information here.