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

Difference between using generate and post deploy hook while generating the Prisma Graphql Schema?

我是 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 文件非常紧凑,里面没有任何注释。

片段:

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 文件带有各种描述性注释。

片段:

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 模式的好方法.

我认为此处推荐的方法是 post-deploy,因为它提供更清晰的输出。 generate 主要用于生成具有类型的 Prisma Client,并为您提供访问数据所需的所有方法。

我个人使用生成如下:

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

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

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