首页 > 解决方案 > node.js- 在 Sequelize 中获取先前的数据值

问题描述

我正在尝试在 Sequelize 中记录对 double 类型字段的更改。这是续集模型:

static initModel(sequelize: Sequelize.Sequelize): typeof payment {
    salesOrderPayment.init({
      id: {
        autoIncrement: true,
        type: DataTypes.INTEGER,
        allowNull: false,
        primaryKey: true
      },
      amount: {
        type: DataTypes.DOUBLE,
        allowNull: true,
        get() {
          return parseIntoFloat(this.getDataValue('amount'));
        }
      }
   })
}

在 Postgres 中:金额字段具有 Numeric(19,4) 数据类型。

在 afterUpdate 钩子中,我这样做是为了检查更改:

if (instance.previous(attribute) === instance.getDataValue(attribute)) {
    continue;
}

更新时,Sequelize 在持久化之前调用数量 getter 对其进行转换。所以在钩子中,前一个值的形式是:6000.0000,getDataValue 是 6000,'===' 对于 2 个相等的值返回 false。Sequelize 是否无论如何都要优雅地解决这个问题,因为可能会有更多的字段需要这种检查。

标签: node.jssequelize.js

解决方案


推荐阅读