【问题标题】:Prisma: What's the workflow?Prisma:工作流程是什么?
【发布时间】:2019-01-07 17:35:48
【问题描述】:

刚开始使用 Prisma 将 GraphQL 和 MySQL 集成到我正在从事的新项目中。太棒了,我喜欢它的简单布局。关于使用 Prisma 开发时要遵循的工作流程,我有一些问题困扰着我。

例如:

昨天我按照教程设置了基本的 Prisma 和 GraphQL 服务器。这一切都运作良好。我的 datamodel.graphql 中只有一个类型。

今天早上我醒来并开始研究另一种类型并将其添加到我的 datamodel.graphql。 Docker 正在运行,我使用解析器更新 index.js 以支持新模型及其查询/突变。但是,在使用node ./index.js 运行系统时,我收到一条错误消息,指出它不知道新模型。我怀疑 Prisma 架构尚未刷新/更新,所以我运行 graphql get-schema --project prisma 但它告诉我没有任何改变。

显然我错过了一些东西。我没有以它想要的方式与 Prisma 合作。谁能告诉我事情的顺利进行必须发生的事件顺序?

本教程非常适合帮助您启动和运行,但我觉得它并不能很好地向开发人员介绍在日常连续开发周期中使用 Prisma 的流程。

任何信息/见解/链接都会非常有用。

非常感谢,

一个

更新

对于其他对工作流程有点迷茫的人。查看 CLI 参考。它对于所有与 Prisma 相关的任务都非常有用(不一定与您的 GraphQL 服务器有关)。 LINK

TL;DR:

您需要在每次数据模型更改时重新部署您的 prisma 服务,以便生成的 prisma.graphql 可以更新为与数据库一起使用的新功能。我跑了prisma deploy,瞧!

【问题讨论】:

  • 您使用什么教程开始使用 Prisma?

标签: graphql prisma prisma-graphql


【解决方案1】:

您缺少prisma deploy 步骤。

您将数据模型(通常称为 datamodel.graphql)与 Prisma 数据库架构(通常称为 prisma.graphql)混淆了。

Prisma 使用数据模型自动生成 Prisma 数据库模式:

请按照此要点更详细地了解两者之间的区别:https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d

【讨论】:

  • 为了更准确,prisma deploy 是应用您的更改并迁移底层数据库架构。但是您还必须执行 prisma generate 来更新自动生成的 Prisma 客户端,以便它可以为任何新添加的模型公开 CRUD 方法。
【解决方案2】:

不要忘记使用prisma deploy 部署您的数据模型。

这里有一个完整的工作示例: https://github.com/alan345/naperg

【讨论】:

    【解决方案3】:

    除了在 CLI 中发出的prisma deploy 命令之外,别忘了也发出prisma generate 命令,Prisma generate 是为所有自动生成的 CRUD 操作创建 javascript 函数的额外步骤来自您的数据库。

    您可能不想要这种额外的间接(或抽象)级别,尽管 Prisma 出于多种原因推荐它 (Prisma Architecture)

    还有一个部署后挂钩,您可以在prisma.yml 文件中输入该挂钩,然后在您每次运行prisma deploy 时自动运行您的prisma generate 命令。让您记住的步骤少了一步。

          // prisma.yml file
    
    datamodel: datamodel.prisma
    generate:
      - generator: javascript-client
        output: ../src/generated/prisma-client
    
    hooks:
      post-deploy:
        - prisma generate
    

    我还没有谈到 prisma 客户端函数的使用以及如何通过上下文访问它们,但是非常有用且最新的教程非常值得做: How To GraphQL

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2011-07-13
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 2021-03-28
      相关资源
      最近更新 更多