Dopóki Sequelize nie obsługuje pól tylko do odczytu i typu danych GENERATED, możesz obejść Sequelize z niestandardowym typem danych:
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')
},
},
})
Spowoduje to poprawną generację kolumny w postgresie przy użyciu sync()
i zapobiec ustawianiu generatedValue
w javascript, zgłaszając błąd.
Zakładając, że sekwencja nigdy nie próbuje zaktualizować pola, jeśli nie uległo ono zmianie, jak określono w https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , to powinno działać.