PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Use colunas geradas pelo Postgres no modelo Sequelize


Até que o Sequelize suporte campos readOnly e o tipo de dados GENERATED, você pode contornar o Sequelize com um tipo de dados 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')
    },
  },
})

Isso gerará a coluna corretamente no postgres ao usar sync() , e evite definir o generatedValue em javascript lançando um Error.

Supondo que o sequelize nunca tente atualizar o campo se ele não tiver sido alterado, conforme especificado em https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , então deve funcionar.