M M*_*ler 9 mysql api rest node.js sequelize.js
是否可以使用Sequelize在MySQL表上创建一个列,可以在创建新行时初始化,但从不更新?
例如,REST服务允许用户更新其配置文件.他可以改变除他之外的任何领域id.我可以id从API路由上删除请求,但这有点多余,因为有许多不同的模型行为相似.理想情况下,我希望能够在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)
]);
}
}
}
}
);
Run Code Online (Sandbox Code Playgroud)
看看这个Sequelize插件:
https://www.npmjs.com/package/sequelize-noupdate-attributes
它增加了对Sequelize模型中没有更新和只读属性的支持.
在您的特定情况下,您可以使用以下标志配置该属性:
{
title: {
type: DataTypes.STRING,
allowNull: false,
unique : true,
noUpdate : true
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许title属性的初始集合if为null,然后一旦已经设置就阻止任何进一步的修改.
免责声明:我是插件作者.
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |