我有一个用typescript编写的节点应用程序,使用sqlite数据库,我希望用sequelize进行模型验证。只有一些东西在起作用。
例如:
@AllowNull(false)
@IsInt
@Length({min: 4, max: 4})
@Column
seasonFrom: number
这里长度验证工作但@IsInt没有。如果我有一个字符串值,字符串值将保存到db,不会抛出任何错误。 我试过用这个:
@Column(DataType.INTEGER)
但情况相同。
我也想验证一些字符串和布尔值,但我没有看到像@IsString或@IsBoolean这样的方法。
答案 0 :(得分:0)
在模型定义中,您可以为每列指定自己的验证器,如下所示:
// in the column definition
const model = sequelize.define('Model', {
numberColumn :{
allowNull:false,
type: Sequelize.INTEGER
validate: {
isNumber: function (val) {
// here you can use any method to determine if it's a
number or not
if (typeof val == "number") { return
return Number.isInteger(val);
}else{ return false; }
}
},
boolenColumn: {
type:Sequelize.BOOLEAN,
validate: {
// you can add here any validation you want
isBoolean:function (val) {
return (typeof(val)=='boolean')
}
}
}