Sequelzie 提交数据遇到 Incorrect integer value: '' 的解决办法,希望给为老sj解答
问题描述
目前在用egg.js做项目的时候需要这么一个问题,在表单提交的时候如果上传的字段为'',并且这个字段是可空的整型字段,那么就会报错 Incorrect integer value: '' xxxxx 问题的点已经明白是什么意思了,就是运行为空的INT字段,如果插入为空的话就会报这个错误,就算设置了默认值也没用,而且后来测试测试了一下,发现就算插入NULL也是没问题,MYSQL也就直接插入NULL,不会根据默认值去插入。
当然可以在后端做数据校验来解决这个问题,但是也想通过做项目来研究一下。开看看有没有统一,并且一劳永逸的办法
问题出现的环境背景及自己尝试过哪些方法
我自己也尝试写了判断 就是只要POST过来的数据是‘’ 就把数据删掉
但是感觉这样很low
后来根据可以放到中间件里面和HOOK里面了,最后还是放到了sequelize的钩子里面
期待的结果是什么?实际看到的错误信息又是什么?
希望各位大神、老司机用egg做过项目的同学们,帮忙想想这个如何解决,非常感谢
这个问题不应该到 orm 这一层吧。如果一个数字要求是整形,就不应该允许前端传字符串类型过来。
可以考虑在 controller 前面加一层 data schema validate。
可以用的插件有很多,比如 egg-validate / egg-async-validator 等