生成 Prisma Graphql Schema 时使用 generate 和 post deploy 钩子之间的区别?

Posted

技术标签:

【中文标题】生成 Prisma Graphql Schema 时使用 generate 和 post deploy 钩子之间的区别?【英文标题】:Difference between using generate and post deploy hook while generating the Prisma Graphql Schema? 【发布时间】:2020-10-14 20:24:36 【问题描述】:

我是 Prisma 的新手,我喜欢使用它。

显然,我一直致力于使用 mysql 创建演示服务器以用于开发目的。但是,当我尝试更新 prisma.yml 文件以生成 Prisma graphql schema 文件时,我发现有几种方法可以做到这一点。

首先,在 yml 文件中使用 generate 属性,如下所示:

generate:
    - generator: graphql-schema
      output: ./src/generated/prisma.graphql

第二次使用post deploy钩子方法:

hooks:
    post-deploy:
        - graphql get-schema -p prisma

因此,我在想其中哪一种是更 goto 的方法,这两种不同的方法有哪些不同的用例?

结果

我在使用 generate 方法时注意到的一件事:我们生成的prisma.grapql 文件非常紧凑,其中没有写入任何 cmets。

片段:

type Query 
  todo(where: TodoWhereUniqueInput!): Todo
  todoes(where: TodoWhereInput, orderBy: TodoOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Todo]!
  todoesConnection(where: TodoWhereInput, orderBy: TodoOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TodoConnection!
  node(id: ID!): Node

但在使用 post deploy 方法时:prisma.graphql 文件带有各种描述性 cmets。

片段:

type Query 
  todoes(where: TodoWhereInput, orderBy: TodoOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Todo]!
  todo(where: TodoWhereUniqueInput!): Todo
  todoesConnection(where: TodoWhereInput, orderBy: TodoOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TodoConnection!

  """Fetches an object given its ID"""
  node(
    """The ID of an object"""
    id: ID!
  ): Node


但是,我想知道除此之外是否还有其他内容,作为初学者,我建议您了解获取 Prisma graphql 架构的好方法。

【问题讨论】:

【参考方案1】:

我认为这里推荐的方法是后期部署,因为它可以提供更清晰的输出。 generate 主要用于生成具有类型并为您提供访问数据所需的所有方法的 Prisma 客户端。

我个人使用 generate 如下:

generate:
  - generator: javascript-client
    output: ./generated/prisma-client/

这将生成有助于在您创建的模型中查询数据的 Prisma 类型。

此外,当您开始使用 Prisma 时,我建议您使用 Prisma 2,因为它是稳定的并且正在积极开发中。

【讨论】:

以上是关于生成 Prisma Graphql Schema 时使用 generate 和 post deploy 钩子之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 schema.graphql 文件中为按 id 过滤的查询引用生成的 Prisma 模式

graphql-code-generator 依据graphql schema自动生成客户端类型定义

Prisma v2:生成一个 .graphql 文件来编辑?

使用 GraphQL、Nexus 和 Prisma 优化 SQL 查询

prisma - 运行 graphql 查询时获取环境变量未找到错误消息

在 Prisma + GraphQL 中使用字符串列表作为参数的突变