如何在apollo graphql服务器中创建嵌套解析器
问题描述:
鉴于以下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",
答
要创建一个“嵌套”分解器,简单地定义父字段的返回类型的解析器。在这种情况下,您的authorQueries
场返回类型authorQueries
,因此您也可以把您的解析器:
{
Query: { authorQueries:() => ({}) },
authorQueries: {
author(root, args) {
return "Hello, world!";
}
}
}
所以在技术意义上说,没有这样的事,作为一个嵌套分解 - 每个对象类型都有一个平面列表的字段,并且这些字段具有返回类型。 GraphQL查询的嵌套是嵌套的结果。
难道没有更好的方法,比如为作者类型定义一个解析器,它使用了一些overgiven根参数的值? 当我不喜欢这样,我有做了一个每次被auther在其他类型的 – user7776232
没错使用的解析器,你需要定义一个解析器为每个返回一个作者,至少在目前的GraphQL实现现场。未来可能会更好。 – stubailo