Totdat Sequelize readOnly-velden en het GENERATED datatype ondersteunt, kun je Sequelize omzeilen met een aangepast datatype:
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')
},
},
})
Dit genereert de kolom correct in postgres bij gebruik van sync()
en voorkomen dat de generatedValue
in javascript door een Error te genereren.
Ervan uitgaande dat sequelize nooit probeert het veld bij te werken als het niet is gewijzigd, zoals gespecificeerd in https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , dan zou het moeten werken.