我开始将 Sequelize 与 SQLite 一起使用。当我尝试插入或更新值时,它不会检查类型错误。例如,我可以在具有 sequelize.BOOLEAN 类型的列中使用 string 值。
我知道SQLite允许这样做,但是Sequelize呢?它没有检查或者我遗漏了什么?
我应该为每种数据类型添加验证检查吗?有没有一种简单的方法来检查类型而不是在每个模型中逐一验证?
既然没有人回答这个问题,我就写自己的解决方案:
在
Sequelize
和 SQLite
中,由于 SQLite
的性质,默认情况下不强制执行类型检查。但是,您可以在 Sequelize
级别添加类型验证。
以下是如何为
boolean
字段添加类型验证的示例:
SOME_FIELD_VALIDATOR: {
isIn: {
args: [['true', 'false', true, false, 1, 0, '1', '0']],
msg: 'Not a valid boolean.'
}
}
在此示例中,
isIn
验证器检查字段的值是否在指定的数组中。如果该值不在数组中,则返回消息“不是有效的布尔值。”
您也可以为其他数据类型添加类似的验证器。例如,对于整数字段,您可以使用
isInt
验证器。