(已解决)egg-sequelize,按照数据库字段定义model,调用model报错,求大佬指点12
发布于 5 年前 作者 PatrickStarCat 3740 次浏览 来自 问答

数据库定义: image.png image.png model定义: image.png Service调用: image.png 结果: image.png

问题

  1. 如上,为什么会出现name不在字段列表中呢?
  2. model需要和数据库强对应吗?测试了几张旧表,发现增加删除model中的定义字段,好像其实不影响数据库的读写。
  3. 新建一张表,service调用model时,会抛出该表不存在的error,是因为model定义不对吗?
2 回复

最新测试,复制命令行中的SQL执行语句,在mysql命令行下执行是没有问题的…也就说在egg运行中,该SQL语句出现问题

仔细对比排查后发现,是数据库连错了,在navicat中操作的一直是另一个mysql服务器。不过总结了几点:

  1. Model需要和数据库强对应吗? 不需要,Model中定义的字段数量只能 <= 数据库对应表实际存在的字段,如果Model中字段数量小于实际存在的字段,在进行查操作时只会输出Model定义字段的行信息
  2. Model中字段的类型影响除写操作外的操作,如表中存在一个为Varchar的title,在Model中定义title 为 DATE,也不会影响正常的查询语句,但是会影响写入。
  3. 出现字段不再field list,或table name doesn’t exist时,未必是程序其他报错而错误的输出了这俩错误,可能确实是没在数据库找到对应的表…
回到顶部