Ссылка на репозиторий type-graphql в репозитории NestJS здесь Мне интересно, как создать еще два слоя в глубине запроса.
В настоящее время настроен запрос рецептов, я смог добавить еще один класс @ObjectType
@ObjectType()
export class Author {
@Field(type => Int)
id: number;
@Field({ nullable: true })
firstName?: string;
@Field({ nullable: true })
lastName?: string;
}
и создал @ResolveProperty внутри Resolver Recipe с:
@ResolveProperty('author', type => Author)
async getAuthor(@Parent() recipe) {
console.log('Resolver auth in recipe', recipe);
// This will be a database call, just mocking data for now.
return Promise.resolve({ id: 1, firstName: 'john', lastName: 'smith' });
}
Все это прекрасно работает (я также создал отдельный распознаватель для автора, но это не мой базовый запрос, поэтому я его не включаю), используя этот запрос GraphQL
{
recipe(id: "1") {
title,
author {
firstName
}
}
}
Этот запрос возвращает
{
"data": {
"recipe": {
"title": "1",
"author": {
"firstName": "john"
}
}
}
}
как и должно быть. Мой вопрос сейчас, как мне добавить еще один уровень? Я пытался создать ObjectType "Publisher"
@ObjectType()
export class Publisher {
@Field(type => Int)
id: number;
}
Но ни одна из комбинаций создания распознавателей или добавления ResolveProperty в распознаватели Author и Recipe не заставила его работать. Куда я должен поместить код распознавателя, чтобы при разрешении GraphQL объекта Author он также разрешал связанную информацию издателя.
Моя цель - получить такой запрос, как:
{
recipe(id: "1") {
title,
author {
firstName,
publisher: {
id
}
}
}
}
вернется
{
"data": {
"recipe": {
"title": "1",
"author": {
"firstName": "jay",
"publisher": {
id: 4
}
}
}
}
}
Не уверен, что я думаю об этом неправильно, но, похоже, это ключевая идея, которую мне не хватает, чтобы иметь возможность расширить ее! Спасибо.