sequelize.js - 在全局钩子中识别 Sequelize 模型
问题描述
我希望通过全局挂钩为我的所有 Sequelize 操作添加一些低级日志记录。像这样的东西:
db.addHook('beforeUpdate', (instance, options) => {
log.info({ instance, options }, `Updating ${modelName} ${instance.get('id')}`);
});
我还没有弄清楚如何填充modelName
甚至是否可能(尽管我发现缺乏信息表明这可能是不可能的)。任何机会这是可能的,我只是还没有找到关键?
如记录所示,这是实例值:
instance: {
"id": null,
"nonIncarcerationAgreementIndicator": true,
"insuranceApplicationId": 22,
"updatedAt": "2018-06-13T13:55:10.978Z",
"createdAt": "2018-06-13T13:55:10.978Z"
}
options
太长了,无法列出,但他们没有提到型号名称。
解决方案
你用的是哪个版本的sequelize?对于 v4,这有效
const Sequelize = require('sequelize');
const sequelize = new Sequelize('test_db', 'postgres', 'postgres', {
host: '127.0.0.1',
dialect: 'postgres',
define: {
hooks: {
beforeCreate: (model, options) => {
console.log(model.constructor.name);
}
}
}
});
const User = sequelize.define('user', {
username: Sequelize.STRING,
});
User.create({
username: 'UserOne',
projects: {
projectName: 'projectOne'
}
}).then((user) => {
console.log(user);
})
推荐阅读
- google-app-engine - Appengine - 上传文件时出现 tmp/文件系统错误
- css - 如何阻止(但不阻止!)浏览器在元素中自动换行?
- c++ - 创建部分屏幕外的 ncurses 窗口
- r - 交叉表有两个以上组时的 Dplyr 计算
- r - 在 R 中按比例分组
- graphdb - GraphDB 在事务中读取、检查和更新
- c - 由于内存布局,将标记的 C 联合转换为 Rust 枚举的问题
- javascript - 为什么模型历史和模型输出历史总是未定义
- python - 使用线程后 QMessageBox 不显示文本并冻结 GUI
- javascript - WordPress中的Highchart饼图标签大小