sql >> Databasteknik >  >> RDS >> PostgreSQL

Använd Postgres-genererade kolumner i Sequelize-modellen

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.




  1. Begränsa främmande nyckelrelationer till rader med relaterade undertyper

  2. SQL-standard UPSERT-anrop

  3. MySQL-databaskonfiguration i en separat klass

  4. Handledning för formulär och rapporter för Oracle 9i, Oracle 10g och Oracle 11g Developer Suite