AI-chat项目:从mysql2到Prisma ORM过程问题排查记录

13 阅读2分钟

随手一记,文章结构比较紊乱,佬们看个乐呵~

Prisma

1、原目标。Jest运行时创建数据库,测试完毕后,删除数据库。

测试用例不通过,思考Prisma连错数据库。

问题本质是开发流程不清晰。没有在用Prisma改造完数据库操作后先测试数据库连接,以及接口是否正常。就直接编写Jest执行e2e测试了。

解决办法:

  1. 看看老师是怎么做的,是测试时创建数据库,测试完删除数据库么?老师用的什么操作数据库的。
  2. 先测试原数据库是否正常跑通测试用例,能跑通。后续直接改env文件来进行创建测试数据库。也不删除数据库了。

解决问题了,实践过程中的收获与问题

舍弃了运行 pnpm testJest测试框架时通过mysql命令创建数据库和删除数据库的逻辑。涉及改动文件jest.config.ts、setupTest.ts。

统一导出的prisma Client AI配置乱整没仔细检查。涉及改动文件 prisma.config.ts、libs/prisma.ts

也许可以写一个通过node本身的child_process库的exec方法运行npx prisma db drop,来删除在jest.config.ts写配置一个运行前加载的配置项setupFiles写上文件路径即可 。不写是因为,测试库本可以不删,存的数据不多也就可以反复创建,因此就可以多个项目用同一个测试库,重新覆盖表结构就好了。

可能团队测试库数据多可能就需要这种方法。

  1. 改动文件:jest.config.ts、setupTest.ts、prisma.config.ts、libs/prisma.ts
  2. 收获:团队更新数据库(没有则创建) npx prisma migrate --name init,因为能够版本回滚,记录sql语句于项目文件中。个人开发 npx prisma db push 直接更新,不记录额外版本。

命令可以写出script脚本: "db:push": "prisma db push",后续直接pnpm db:push就可以更新数据库表结构了