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

GraphQL突变不工作与RuntimeWiring.newRuntimeWering()

易宣
2023-03-14

我在GraphQL Java中定义了一个简单的模式来添加Book并获取[Book]。我的模式如下:

schema {
 query: Query
 mutation : Mutation
}

type Query {
 allBooks: [Book]
 book(id: String): Book
}

type Book {
  isn: String
  title: String
  publisher: String
  author: String
  publishedDate: String
}

input BookType {
  isn: String
  title: String
  publisher: String
  author: String
  publishedDate: String
}

type Mutation {
  newBook(
      isn: String!,
      title: String!,
      publisher: String!,
      authors:String!,
      publishedDate: String!
  ): Book
}

我创建了如下运行时连接:

RuntimeWiring.newRuntimeWiring()
  .type("Query", typeWiring ->
    typeWiring.dataFetcher("allBooks", allBooksDataFetcher))
  .type("Mutation", typeWiring ->
    typeWiring.dataFetcher("newBook", addBooksDataFetcher))
  .build();

allBooks查询工作正常,但newBook变异不工作,并给出以下错误:

"errors": [
  {
    "validationErrorType": "FieldUndefined",
    "message": "Validation error of type FieldUndefined: Field oneBook is undefined",
    "locations": [
      {
        "line": 3,
        "column": 3
      }
    ],
    "errorType": "ValidationError"
  }
],
  "data": null,
  "extensions": null
}

邮递员的突变是:

{
  newBook(
    isn:"1",
    title: "test title",
    publisher: "test publisher",
    authors:"test author",
    publishedDate: "2 Nov 2018"
  ) {
    title
  }
}

请帮帮我。它没有检测到突变类型,但查询工作绝对正常。我错过什么了吗?

共有1个答案

华宏逸
2023-03-14

我不确定错误指的是什么,但在执行变异时确实需要包含操作(queryvsmutation)。也就是说,您的请求应该更像这样:

mutation ArbitraryOperationName {
  newBook(
    isn:"1",
    title: "test title",
    publisher: "test publisher",
    authors:"test author",
    publishedDate: "2 Nov 2018"
  ) {
    title
  }
}

编写查询时,您可以使用简写符号并省略query关键字,但突变必须始终包含mutation,以指示您正在进行突变而不是查询。

 类似资料:
  • 我有一个数据帧,它看起来像: 我想创建一个新的变量来识别一个网站是否使用6122喷墨作为我的dplyr管道的一部分。新变量应该包含Y或N。我使用了下面的代码: 我希望得到如下输出: 然而,我反而得到了这样的输出: 任何帮助都将不胜感激。

  • 我是GraphQL的新手。我使用express-graphql在REST API上为petSore模式生成graphql查询。我能够使用graphql查询获得get API的结果,但无法使用突变获得POST/PUT API的响应。)为了创建宠物,我使用突变, null

  • 我使用的是Prisma GraphqQL,我在where选择器中发现了一个突变:“您为User上的where选择器提供了一个无效的参数” 突变: 变量: 结果: 架构: 为什么这种突变不起作用? 额外信息 这个项目的完整代码在这里: Graphql游乐场在这里:

  • 我正在尝试向使用Apollo的GraphQL服务器发送突变查询。 然而,我只看到实现这一点的唯一方法是使用突变组件。https://www.apollographql.com/docs/react/essentials/mutations/#the-突变成分 有没有一种简单的方法可以发送这样的突变? 从“graphql标记”导入gql;

  • 我正在通过解析器运行GraphQl变异。这是与Neo4j数据库的对比。该查询运行良好,但是我无法以在结果中显示的方式组织结果。我已经尝试了几种不同的结果和记录映射组合,但是我无法在输出中显示返回结果集的属性。 具体来说,在下面的示例中,您将看到响应中的name字段(通过GraphiQL)在我希望将其设置为返回值时为空。 解析器: GraphQL查询 输出: 相关架构部分

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