sequelize.js - 在全局钩子(Hook)中识别 Sequelize 模型

标签 sequelize.js

我希望通过全局 Hook 向我的所有 Sequelize 操作添加一些低级日志记录。像这样:

db.addHook('beforeUpdate', (instance, options) => { log.info({ instance, options }, `更新 ${modelName} ${instance.get('id')}`); });

我还没有弄清楚如何填充 modelName 甚至是否可能(尽管我发现的信息不足表明这可能是不可能的)。有没有可能这是可能的,而我只是没有找到 key ?

根据记录,这是实例值:

实例: { “id”:空, "nonIncarcerationAgreementIndicator": true, “保险申请编号”:22, “更新时间”:“2018-06-13T13:55:10.978Z”, “创建于”:“2018-06-13T13:55:10.978Z” }

选项 太长而无法列出,但它们在任何地方都没有提到模型名称。

最佳答案

您使用的是哪个版本的 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);
})

关于sequelize.js - 在全局钩子(Hook)中识别 Sequelize 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50837222/

相关文章:

arrays - Sequelize 数据库错误: operator does not exist: character varying[] @> character varying

javascript - 将时间戳与 Sequelize 查询中的日期进行比较

node.js - 如何在sequelize中处理外键关联

node.js - Sequelize 无法连接到 MySql

Node.js + Sequelize + SQL Server

sequelize.js - 带有 Sequelize 的副本读取数据库的竞争条件

node.js - 将散列密码保存到 Sequelize 违背了我保存散列密码的简单愿望

node.js - 引用错误 : [tablename] is not defined | Node. js、Express、Axios、PostgreSQL

mysql - Sequelize.js:如何处理与 MySQL 的重新连接

mysql - db.sync({alter :true}). then(); 在 sequelize node.js express app