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

在graph ql中进行突变后的查询

澹台正业
2023-03-14

有些事情我想应该很容易,但我在网上搜索了很长时间后找不到答案:

我只是想使用graphql进行一次变异,然后再使用另一个graphql查询刷新数据,如何在一个HTTP(graphql)请求中实现这一点?

失败的尝试:

  1. 我尝试使用批处理发送包装在一个数组中的两个graphql模式,但它是异步的,查询会在不需要的变异之前返回
  2. 我试着用突变编写相同的查询,实际上什么都不突变,并把它放在真正的突变之后,这是可行的,但我不相信这是对此的优化解决方案
  3. 此外,我知道apollo客户端(react)有更新(refetchQuery)等功能,但如果没有任何客户端框架,我怎么能做到这一点呢

谢谢:)

相关链接:

  • 同时进行变异和查询
  • 我可以避免在Apollo GraphQL中使用refetchQueries吗

共有1个答案

慕容耘豪
2023-03-14

如果我理解正确,您希望发送一个变异,并在同一请求/查询中发送一个查询,等待变异完成后再解决。从规范的角度来看,这根本不可能(目前)。您可以在这里阅读规范(我知道技术规范听起来很可怕,但如果您已经对GraphQL有点熟悉,那么很容易阅读:-)。

这个想法是突变结果旨在潜在地返回已更新的数据。我不久前在一篇关于查询对象类型的文章中读到。这篇文章强调了该类型是如何只是一个普通的对象类型,并且可以简单地在突变结果中返回。虽然我不推荐这种模式,因为我认为突变结果应该显式列出所有更新的对象,但这当然是可能的,并且可以成为非常复杂情况下的解决方案(例如您描述的情况)。为了使其更加直观,这里有一个示例模式:

type ExampleMutationResult {
  success: Boolean!
  query: Query!
}

type Query {
  queryField: String!
}

type Mutation {
  exampleMutation: ExampleMutationResult!
}

# Query would look like this
mutation example {
  exampleMutation {
    success
    query {
      queryField
    }
  }
}

正如您所见,折衷相对较高,只有在您可以更改模式时才能启用。我首先检查第二个HTTP请求的开销是否真的需要优化。

 类似资料:
  • 我是GraphQL的新手。我已经有了一个添加数据的模式和变异,但是我有点纠结于如何进行更新变异来更新数据库中的现有数据。 我想我知道我可能需要做些什么来实现这一点,但我会感谢一些关于我的想法是否是正确的方法的指示。 这是我的模式,其中包含我的突变GraphQLObject。 我是否正确地说,在解析函数中,我需要首先通过id在数据库中找到相关对象,然后返回任何arg已更新/更改的args?我不知道如

  • 我正在开发一个GraphQL API,其中有一个带有初步数据比较的导入特性(在现有数据之间 电流为: API使用者执行GQL查询查询预览导入($数据:字符串),其中,是base64编码的电子表格。在后端解析数据,并在数据库中插入一条guid为的记录。最后,API返回电子表格中的数据与数据库中的数据以及guid之间的差异结果 前端然后要求用户在看到比较(创建、更新、删除)后确认导入。为此,向API发

  • 我尝试执行Graphql客户端查询。遗憾的是,我找不到任何关于如何使用动态图QL客户端进行简单变异的文档或示例。这是文件https://quarkus.io/guides/smallrye-graphql-client. {0}..{4} 是可变占位符。有人知道如何使用DynamicGraphlQlClient执行这个查询吗? 谢谢

  • 所以我不知道这是否真的描述了我的问题,但这是我能得到的最接近的吗? 我正在使用AWSAppsyncClient进行一些GraphQL突变。由于模型的性质,在更大程度上,由于我缺乏经验,我需要创建一个记录,然后创建两个依赖于第一个的记录,然后才能将它们链接到数据库中。 目前,我正在进行第一次变异,它返回所创建记录的ID。然后在查询返回的promise中创建中间记录。它基本上看起来像: 问题是Prom

  • 我的变异查询: 查询变量: GraphQL模式(突变定义): 我尝试同时使用GraphiQL接口和apollo-client来发送带有变量的请求,但出现了相同的错误。有什么想法吗?

  • 我在GraphQL中遇到了一些困难,其中模式中的类型包括嵌套类型。所以假设我有一个预订的数据类型: 在模式文件中,我还有一个如下所示的根变异: 我可以在 GraphiQL 中编写一个突变来为预订创建数据,没问题: 到目前为止一切都很好。现在,我需要向原始预订对象添加一个嵌套类型来记录分配给预订的工作人员。因此,我为工作人员添加了类型(输入和输出类型),并将这些类型添加到预订类型和突变中: 预订类型