【问题标题】:Datafetcher for nested types in graphqlgraphql中嵌套类型的Datafetcher
【发布时间】:2019-06-18 13:15:29
【问题描述】:

我将 graphql 和 graphql-java 用于获取项目及其受让人的简单 API

schema {
  query: Query
}

type Query {
   projects: [Project]
   users: [User]
}

type Project {
   id: ID!
   name: String
   assignee : User
   status: String

}

type User {
   id: ID!
   name: String
}

我已经有以下解析器:

private RuntimeWiring buildRunTimeWiring() {
return RuntimeWiring.newRuntimeWiring()
    .type("Query", typeWiring -> typeWiring
    .dataFetcher("projects", allProjectsDataFetcher)
    .dataFetcher("users", allUserDataFetcher)
    ).build();
}

我应该如何编写解析器,以便在查询时

projects {
  id
  name
  assignee
}

它应该返回项目及其受让人。有可能吗?

【问题讨论】:

    标签: graphql graphql-java


    【解决方案1】:

    不确定您的解析器代码(对我来说看起来不错)并希望它能够解析该对象内的项目和相关受让人,我在您的 graphQL 架构中看到了问题(如果您期望用户列表)。它应该看起来像......

    type Project {
       id: ID!
       name: String
       assignee : [User]
       status: String
    }
    

    确保你返回的对象应该看起来像

    {id:1, name:"someName",status:"Active", assignee :[{id:003, name:"A"}, {id:004, name:"B"}]}
    

    【讨论】:

    • 我的问题是——我需要自己在“allProjectsDataFetcher”解析器中创建这个对象结构吗?有没有办法可以指定连接并让 graphql 自行解决?
    • 没有。 GraphQL 是模式规范,它不会自动创建对象结构。您可以创建一个模型并保持与 graphQL 类型定义中相同的属性,并将此模型(在分配值之后)作为解析器的响应发送,然后只有 graphQL 会映射属性。
    猜你喜欢
    • 2017-12-18
    • 2017-10-29
    • 2020-12-09
    • 2017-05-17
    • 2017-06-21
    • 2022-11-02
    • 2020-01-31
    • 2019-07-05
    • 2021-08-22
    相关资源
    最近更新 更多