sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug Postgres-genererede kolonner i Sequelize-modellen

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.




  1. Løsning til at finde dublerede registreringer, der involverer STI og forældre-barn-forhold

  2. RDS-instans CPU-udnyttelse

  3. MySQL opdaterer et felt ved hjælp af info i anden tabel

  4. SQL Server Enhver operatør forklaret