Indtil Sequelize understøtter readOnly-felter og den GENEREDE datatype, kan du komme rundt i Sequelize med en tilpasset 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')
},
},
})
Dette vil generere kolonnen korrekt i postgres, når du bruger sync()
, og forhindrer indstilling af generatedValue
i javascript ved at kaste en fejl.
Forudsat at efterfølgeren aldrig forsøger at opdatere feltet, hvis det ikke har ændret sig, som angivet i https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , så burde det virke.