2016-12-01 66 views
8

鉴于以下apollo服务器graphql架构 我想将它们拆分为单独的模块,因此我不希望根查询架构下的作者查询..并希望它分离。所以我将它添加到根查询如何在apollo graphql服务器中创建嵌套解析器

type Author { 
    id: Int, 
    firstName: String, 
    lastName: String 
} 
type authorQueries { 
    author(firstName: String, lastName: String): Author 
} 

type Query { 
    authorQueries: authorQueries 
} 

schema { 
    query: Query 
} 

之前增加了一个叫做authorQueries另一层我尝试以下..你可以看到authorQueries添加另一层指定笔者功能之前。

Query: { 
    authorQueries :{ 
     author (root, args) { 
      return {} 
     } 
    } 
} 

当Graphiql查询,我还添加了额外的一层..

{ 
    authorQueries { 
     author(firstName: "Stephen") { 
      id 
     } 
    } 
} 

我碰到下面的错误。

"message": "Resolve function for \"Query.authorQueries\" returned undefined",

回答

12

要创建一个“嵌套”分解器,简单地定义父字段的返回类型的解析器。在这种情况下,您的authorQueries场返回类型authorQueries,因此您也可以把您的解析器:

{ 
    Query: { authorQueries:() => ({}) }, 
    authorQueries: { 
    author(root, args) { 
     return "Hello, world!"; 
    } 
    } 
} 

所以在技术意义上说,没有这样的事,作为一个嵌套分解 - 每个对象类型都有一个平面列表的字段,并且这些字段具有返回类型。 GraphQL查询的嵌套是嵌套的结果。

+0

难道没有更好的方法,比如为作者类型定义一个解析器,它使用了一些overgiven根参数的值? 当我不喜欢这样,我有做了一个每次被auther在其他类型的 – user7776232

+0

没错使用的解析器,你需要定义一个解析器为每个返回一个作者,至少在目前的GraphQL实现现场。未来可能会更好。 – stubailo