在Apollo GraphQL中,如果你遇到了无法调用嵌套字段的解析器的问题,可能是因为你没有正确设置解析器的嵌套字段。
以下是一个解决方法的代码示例:
首先,假设我们有一个GraphQL查询,它包含一个名为"book"的字段,该字段在"author"字段中嵌套:
query {
book {
author {
name
}
}
}
接下来,我们需要设置解析器来解析"book"字段和"author"字段。在解析"book"字段时,我们需要调用解析"author"字段的嵌套解析器。
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type Query {
book: Book
}
type Book {
author: Author
}
type Author {
name: String
}
`;
const resolvers = {
Query: {
book: () => {
// 在这里创建一个Book对象,用于返回给查询
return {
author: {} // 这里定义一个空的Author对象
};
}
},
Book: {
author: (parent) => {
// 在这里调用Author对象的解析器
return parent.author;
}
}
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}`);
});
在这个示例中,我们设置了一个名为"Book"的类型,它包含一个名为"author"的字段。在"Book"类型的解析器中,我们调用了"author"字段的解析器。
这样,当我们执行上述的GraphQL查询时,Apollo服务器将会正确调用嵌套字段的解析器,并返回预期的结果。
希望这个示例能够帮助你解决问题!