E 'possibile creare una colonna su una tabella MySQL usando Sequelize che può essere inizializzata quando si crea una nuova riga, ma mai aggiornata?Una colonna Sequalize che non può essere aggiornata
Ad esempio, un servizio REST consente a un utente di aggiornare il proprio profilo. Può cambiare qualsiasi campo eccetto il suo id
. Posso rimuovere il numero id
dalla richiesta sulla route API, ma è un po 'ridondante perché ci sono diversi modelli che si comportano allo stesso modo. Idealmente, mi piacerebbe essere in grado di definire un vincolo in Sequelize che impedisce alla colonna id
di essere impostata su un valore diverso da DEFAULT
.
Attualmente, sto utilizzando un setterMethod
per il per lanciare manualmente un ValidationError
, ma questo sembra hacker, quindi mi chiedevo se c'è un modo più pulito di farlo. Ancora peggio è che questa implementazione consente ancora di impostare id
durante la creazione di un nuovo record, ma non conosco un modo per aggirare questo come quando Sequelize genera la query che chiama setterMethods.id
per impostare il valore su DEFAULT
.
return sequelize.define('Foo',
{
title: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
notEmpty: true
}
}
},
{
setterMethods: {
id: function (value) {
if (!this.isNewRecord) {
throw new sequelize.ValidationError(null, [
new sequelize.ValidationErrorItem('readonly', 'id may not be set', 'id', value)
]);
}
}
}
}
);
Basta chiedersi lo stesso. https://github.com/sequelize/sequelize/issues/4603 – diosney