Докато Sequelize поддържа полета само за четене и типа данни GENERATED, можете да заобиколите Sequelize с персонализиран тип данни:
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')
},
},
})
Това ще генерира колоната правилно в postgres при използване на sync()
и предотвратява настройката на generatedValue
в javascript чрез извеждане на грешка.
Ако приемем, че sequelize никога не се опитва да актуализира полето, ако то не е променено, както е посочено в https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , тогава трябва да работи.