我有一个类似
的架构(已定义了适当的数据库表和实体类)type User {
id: Int!
phoneNumber: String!
}
type Event {
id: Int!
host: User
}
我正在尝试使用Apollo编写类似
的查询Query{
event(id:1){
host{
firstName
}
}
}
但是我不知道如何获取Apollo库以将host字段中的User类型解析为存储在事件对象上的hostId。
我修改了事件以返回hostId字段,并且它工作得很好,但是Graphql不会将ID解析为适当的用户类型。我想念什么?
编辑:缺少解析器代码
event: async (parent: any, args: { id: number }) => {
const eventRepository = getConnection().getRepository(Event);
const event = await eventRepository.findOne(args.id);
return event;
},
我设法通过使用findOne(args.id, { relations: ['host']})
获得了工作版本,但是我不喜欢那样,因为似乎应该委派给graphql处理。
答案 0 :(得分:2)
您的解析器应该是这样
const resolver = {
Query: {
event: async (_: any, args: any) => {
return await event.findOne(args.id);
}
},
event: {
host: async (parent: any, args: any, context: any) => {
return await user.find({ id: parent.id });
}
}
};