我有一个架构(已定义了适当的数据库表和实体类),例如
type User {
id: Int!
phoneNumber: String!
}
type Event {
id: Int!
host: User
}
我正在尝试使用Apollo编写类似的查询
Query{
event(id:1){
host{
firstName
}
}
}
但是我不知道如何获取Apollo库以将主机字段中的用户类型解析为存储在事件对象上的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处理。 最佳答案
您的解析器应该是这样的
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 });
}
}
};