如何使用sequelize和sqlite验证int和boolean

时间:2018-04-01 12:11:05

标签: javascript node.js validation typescript sequelize.js

我有一个用typescript编写的节点应用程序,使用sqlite数据库,我希望用sequelize进行模型验证。只有一些东西在起作用。

例如:

@AllowNull(false)
@IsInt
@Length({min: 4, max: 4})
@Column
seasonFrom: number

这里长度验证工作但@IsInt没有。如果我有一个字符串值,字符串值将保存到db,不会抛出任何错误。 我试过用这个:

@Column(DataType.INTEGER) 

但情况相同。

我也想验证一些字符串和布尔值,但我没有看到像@IsString或@IsBoolean这样的方法。

1 个答案:

答案 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')
                                 }
                }
           }