GraphQL Union中多个类型的模式
我正在学习GraphQL(使用Apollo服务器)中的接口和联合,我想知道一些事情。使用文档示例,如何返回可以返回作者和书籍的结果 我的理解是,您只能返回一种对象类型。如果搜索结果同时包含书籍和作者的名称和数组,那么如何返回这样的结果?这件事能安排好吗?我注意到,GraphQL Union中多个类型的模式,graphql,apollo-server,Graphql,Apollo Server,我正在学习GraphQL(使用Apollo服务器)中的接口和联合,我想知道一些事情。使用文档示例,如何返回可以返回作者和书籍的结果 我的理解是,您只能返回一种对象类型。如果搜索结果同时包含书籍和作者的名称和数组,那么如何返回这样的结果?这件事能安排好吗?我注意到,\uu resolveType在数组中不起作用,只能返回一个结果(它将返回数组中所有对象的类型,而不是数组中的每个对象) GraphQL类型定义 分解器 const解析器={ 结果:{ __resolveType(对象、上下文、信息){
\uu resolveType
在数组中不起作用,只能返回一个结果(它将返回数组中所有对象的类型,而不是数组中的每个对象)
GraphQL类型定义
分解器
const解析器={
结果:{
__resolveType(对象、上下文、信息){
控制台日志(obj);
if(对象名称){
返回“作者”;
}
if(对象标题){
归还“书”;
}
返回null;
},
},
查询:{
搜索:()=>{…}
},
};
const server=新服务器({
typeDefs,
解析器,
});
server.listen().then({url})=>{
log(`只有两种情况会发生:
搜索
字段的类型实际上不是一个列表(即它是结果
,而不是[Result]
,如上面的代码所示
search
字段的解析程序正在返回一个对象数组:return[[{title:'A'},{title:'B'},{name:'C'}]]
只有两种情况会发生:
搜索
字段的类型实际上不是一个列表(即它是结果
,而不是[Result]
,如上面的代码所示
search
字段的解析程序正在返回一个对象数组:return[[{title:'A'},{title:'B'},{name:'C'}]]
我通过console.log(obj)
输出结果,并获得[{title:'A'},{title:'B'},{name:'C'}]
谢谢丹尼尔(我再次通过console.log(obj)
输出结果并获得[{title:'A'},{title:'B'},{name:'C'}]
谢谢丹尼尔(再次)
const { gql } = require('apollo-server');
const typeDefs = gql`
union Result = Book | Author
type Book {
title: String
}
type Author {
name: String
}
type Query {
search: [Result]
}
`;