Hingga Sequelize mendukung bidang readOnly dan tipe data GENERATED, Anda dapat menyiasati Sequelize dengan tipe data khusus:
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')
},
},
})
Ini akan menghasilkan kolom dengan benar di postgres saat menggunakan sync()
, dan mencegah pengaturan generatedValue
di javascript dengan melempar Kesalahan.
Dengan asumsi bahwa sekuel tidak pernah mencoba memperbarui bidang jika tidak berubah, seperti yang ditentukan dalam https://sequelize.org/master/manual/model-instances.html#change-awareness-of-save , maka itu akan berhasil.