当前位置: 首页 > 知识库问答 >
问题:

在生成Prisma Graphql模式时使用生成和部署后钩子之间的区别?

隗和裕
2023-03-14

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

显然,我一直在使用MySQL开发目的创建演示服务器。然而,当我尝试更新prisma.yml文件以生成Prisma图ql模式文件时,我发现有几种方法可以做到这一点。

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

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

第二种方法是使用post-deployhook方法:

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
}

但是在使用部署后方法时: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 graql模式的好方法上投一些光。

共有1个答案

舒永嘉
2023-03-14

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

我个人使用过如下方法:

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

这将生成Prisma类型,帮助查询您创建的模型中的数据。

同样,当你开始使用Prisma时,我建议Prisma 2是稳定的,并且正在积极地进行。

 类似资料:
  • 问题内容: 这似乎是一个基本问题,但是我找不到任何文档: 分叉和生成node.js进程有什么区别?我已经读过分叉是生成的一种特殊情况,但是使用它们的不同用例/重用分别是什么? 问题答案: Spawn是用于运行系统命令的命令。运行spawn时,会向其发送系统命令,该命令将在其自己的进程上运行,但不会在节点进程内执行任何其他代码。您可以为生成的进程添加侦听器,以允许您的代码与生成的进程进行交互,但是不

  • 我在将包含RSA公钥的字符串转换为java.security公钥类型时遇到了麻烦,该RSA公钥是我在cygwin中使用SSh-keygen生成的。 那么,我假设我的问题是两个密钥之间有什么区别,以及我如何才能成功地将第一个转换为可用的PublicKey对象?

  • 生成和部署合约 既然你既有一个已经解锁的帐户也有一些资金,你可以通过将一个事务发送到空的地址,使用evm代码作为数据来创建一个智能合约。是不是很简单? primaryAddress = eth.accounts[0] MyContract = eth.contract(abi); contact = MyContract.new(arg1, arg2, ...,{from: primaryAddr

  • 在Tomcat web应用程序上运行的Maven-Spring-Hibernate-MySql中,我使用hibernate ddl生成带有mysql5InnodbDealication的DB模式。 除了外键的cascade选项外,模式的生成很好。例如,我有这样的结构: 保存用户详细信息对象的用户对象,两者共享相同的键: 下面是用户详细信息的模式创建: 正如您所看到的,在“外键”部分中没有写任何“o

  • 我有一个WildFly集群,它应该将所有主题消息共享给不同的节点,并在一个节点离线时保存它们。< br >在这种情况下,我需要耐用的订阅服务器。 我注意到如果我使用相同的clientID,系统会进行负载平衡。如果我将clientID或认购名称更改为唯一值,它就可以工作。 那么什么时候使用唯一的clientID,什么时候使用subscriptionName 我的答案是,每个节点的唯一clientID

  • 问题内容: 迭代器和生成器有什么区别?有关何时使用每种情况的一些示例会有所帮助。 问题答案: 是一个更笼统的概念:其类具有next方法(在Python 3中)和具有方法的任何对象。 每个生成器都是一个迭代器,但反之亦然。生成器是通过调用具有一个或多个yield表达式(yield在Python 2.5及更早版本中为语句)的函数而构建的,并且该函数是满足上一段对的定义的对象。 当你需要一个具有某些复杂