是否有可能使用Sequelize在MySQL表上創建列,該列可以在創建新行時初始化,但從未更新過?無法更新的Sequelize列
例如,REST服務允許用戶更新他的個人資料。他可以改變除他的id
之外的任何領域。我可以從API路徑上的請求中去除id
,但這有點多餘,因爲有許多不同的模型行爲相似。理想情況下,我希望能夠在Sequelize中定義一個約束,以防止將id
列設置爲DEFAULT
以外的任何其他值。
目前,我使用的setterMethod
爲id
手動拋出ValidationError
,但這似乎hackish,所以我想知道是否有一個更乾淨的方式做到這一點。更糟糕的是,這個實現仍然允許在創建新記錄時設置id
,但我不知道解決此問題的方法,因爲Sequelize生成查詢時調用setterMethods.id
將值設置爲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)
]);
}
}
}
}
);
只是想知道同樣的。 https://github.com/sequelize/sequelize/issues/4603 – diosney