Tills Sequelize stöder skrivskyddade fält och den GENERADE datatypen, kan du ta dig runt Sequelize med en anpassad datatyp:
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')
},
},
})
Detta kommer att generera kolumnen korrekt i postgres när du använder sync()
och förhindra inställning av generatedValue
i javascript genom att kasta ett fel.
Förutsatt att uppföljaren aldrig försöker uppdatera fältet om det inte har ändrats, som specificerats i https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , då borde det fungera.