Dokud nebude Sequelize podporovat pole readOnly a datový typ GENERATED, můžete Sequelize obejít pomocí vlastního datového typu:
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')
},
},
})
Toto vygeneruje sloupec správně v postgresu při použití sync()
a zabránit nastavení generatedValue
v javascriptu vyvoláním chyby.
Za předpokladu, že se sequelize nikdy nepokusí pole aktualizovat, pokud se nezměnilo, jak je uvedeno v https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , pak by to mělo fungovat.