生成 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 查询