刚刚开始使用Prisma作为将GraphQL和MySQL集成到我正在研究的新项目中的一种方式。太好了,我喜欢这样简单地安排事物。关于使用Prisma开发时要遵循的工作流程,我有几个问题困扰着我。
例如:
昨天,我按照教程设置了基本的Prisma和GraphQL服务器。一切都很好。我只有一个在我的datamodel.graphql中建模的类型。
今天早上,我醒来,开始处理另一种类型,并将其添加到我的datamodel.graphql中。 Docker正在运行,我使用解析器更新了index.js,以支持新的Model及其查询/突变。但是,在使用node ./index.js
运行系统时,出现一个错误,提示它不知道新模型。我怀疑Prisma模式尚未刷新/更新,所以我运行graphql get-schema --project prisma
,但它告诉我没有任何变化。
很明显,我缺少了一些东西。我没有以自己想要的方式与Prisma合作。任何人都可以向我说明事情顺利进行所必须发生的事件顺序吗?
该教程非常适合您入门和运行,但是我觉得它并不能很好地将开发人员介绍到日常连续开发周期中使用Prisma的流程中。
任何信息/见解/链接将非常有用。
非常感谢,
A
更新
对于那些对工作流程有些迷惑的人。看一下CLI参考。对于所有与Prisma有关的任务(不一定与GraphQL服务器有关的所有事情),它非常有用。 LINK
TL; DR:
每次数据模型发生更改时,您都需要重新部署prisma服务,以便可以使用新功能更新生成的prisma.graphql以与数据库一起使用。我跑了prisma deploy
,瞧!
答案 0 :(得分:6)
您缺少prisma deploy
步骤。
您正在将数据模型(通常称为datamodel.graphql)与Prisma数据库架构(通常称为pyramida.graphql)混淆。
Prisma使用数据模型自动生成Prisma数据库架构:
请按照以下要点更详细地了解两者之间的区别:https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d
答案 1 :(得分:0)
别忘了使用prisma deploy
部署数据模型。
您在这里有一个完整的工作示例: https://github.com/alan345/naperg
答案 2 :(得分:0)
除了CLI中发布的prisma deploy
命令之外,别忘了也发布prisma generate
命令,Prisma generate是为所有自动创建javascript函数的额外步骤数据库中生成的CRUD操作。
虽然Prisma出于某些原因(Prisma Architecture)推荐这样做,但您可能不希望这种额外的间接(或抽象)级别
还有一个部署后挂钩,您可以在prisma.yml
文件中输入该挂钩,然后在每次运行prisma generate
时自动运行prisma deploy
命令。让您少记得一个步骤。
// prisma.yml file
datamodel: datamodel.prisma
generate:
- generator: javascript-client
output: ../src/generated/prisma-client
hooks:
post-deploy:
- prisma generate
我还没有谈论过如何使用ArizonaA客户端功能以及如何通过上下文访问它们,但是非常有用且最新的教程非常值得做: How To GraphQL