Sequelzie 提交数据遇到 Incorrect integer value: '' 的解决办法,希望给为老sj解答

问题描述

目前在用egg.js做项目的时候需要这么一个问题,在表单提交的时候如果上传的字段为'',并且这个字段是可空的整型字段,那么就会报错 Incorrect integer value: '' xxxxx 问题的点已经明白是什么意思了,就是运行为空的INT字段,如果插入为空的话就会报这个错误,就算设置了默认值也没用,而且后来测试测试了一下,发现就算插入NULL也是没问题,MYSQL也就直接插入NULL,不会根据默认值去插入。

当然可以在后端做数据校验来解决这个问题,但是也想通过做项目来研究一下。开看看有没有统一,并且一劳永逸的办法

问题出现的环境背景及自己尝试过哪些方法

我自己也尝试写了判断 就是只要POST过来的数据是‘’ 就把数据删掉

clipboard.png

但是感觉这样很low
后来根据可以放到中间件里面和HOOK里面了,最后还是放到了sequelize的钩子里面

clipboard.png

期待的结果是什么?实际看到的错误信息又是什么?

希望各位大神、老司机用egg做过项目的同学们,帮忙想想这个如何解决,非常感谢

阅读 2.6k
1 个回答

这个问题不应该到 orm 这一层吧。如果一个数字要求是整形,就不应该允许前端传字符串类型过来。
可以考虑在 controller 前面加一层 data schema validate。
可以用的插件有很多,比如 egg-validate / egg-async-validator 等

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题