【发布时间】:2016-08-23 22:42:28
【问题描述】:
是否可以使用 Sequelize 在 MySQL 表上创建可以在创建新行时初始化但永远不会更新的列?
例如,REST 服务允许用户更新他的个人资料。他可以更改除id 之外的任何字段。我可以从 API 路由上的请求中去除id,但这有点多余,因为有许多不同的模型表现相似。理想情况下,我希望能够在 Sequelize 中定义一个约束,以防止将 id 列设置为 DEFAULT 以外的任何内容。
目前,我正在使用setterMethod 为id 手动抛出ValidationError,但这似乎很老套,所以我想知道是否有更清洁的方法来执行此操作。更糟糕的是,这个实现仍然允许在创建新记录时设置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)
]);
}
}
}
}
);
【问题讨论】:
标签: mysql node.js api rest sequelize.js