sql >> Base de Datos >  >> RDS >> PostgreSQL

Usar columnas generadas por Postgres en el modelo Sequelize

Hasta que Sequelize admita campos de solo lectura y el tipo de datos GENERADO, puede moverse por Sequelize con un tipo de datos personalizado:

const Item = sequelize.define('Item', {
  someCol: { type: DataTypes.DOUBLE },
  someOtherCol: { type: DataTypes.DOUBLE },
  generatedValue: {
    type: 'DOUBLE PRECISION GENERATED ALWAYS AS (LEAST("someCol", "someOtherCol")) STORED',
    set() {
      throw new Error('generatedValue is read-only')
    },
  },
})

Esto generará la columna correctamente en postgres al usar sync() y evitar establecer el generatedValue en javascript arrojando un error.

Suponiendo que Sequelize nunca intente actualizar el campo si no ha cambiado, como se especifica en https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , entonces debería funcionar.