我对graphql和Apollo还是有点陌生。但是我很好奇,如果我创建一个返回两种类型联合的搜索查询,我将如何修改该联合的组合结果。使用Apollo Docs示例(Unions and interface):
union Result = Book | Author
type Book {
title: String
}
type Author {
name: String
}
type Query {
search: [Result]
}
const resolvers = {
Result: {
__resolveType(obj, context, info){
if(obj.name){
return 'Author';
}
if(obj.title){
return 'Book';
}
return null;
},
},
Query: {
search: () => { ... }
},
};
const server = new ApolloServer({
typeDefs,
resolvers,
});
server.listen().then(({ url }) => {
console.log(`? Server ready at ${url}`)
});
“书籍”和“作者”解析器都完成后,假设我有200个结果,50本书和150个作者。如果我想将其限制为100个(按字母顺序排序),在将其返回给客户端之前,我将如何访问已解析的数组? Apollo服务器类型定义具有带有resolve函数的IResolverOptions接口,但是如果将其添加到Result解析器中,则会收到一条错误消息,指出Result.resolve是在解析器中定义的,而不是架构中定义的。