Аргумент запроса в Nest
Список целиком уже отдаётся, а экран детали просит одну запись по номеру. Без аргумента клиент вынужден забирать весь массив и отбирать строку на своей стороне.
Параметр операции чтения
помечают Args с именем
поля в схеме. Метод ищет
элемент в массиве по
идентификатору и возвращает
строку или пустое значение,
если совпадения нет.
Тип ответа делают nullable,
когда запись может отсутствовать.
Покажем на примере постов:
import { Args, Query, Resolver } from '@nestjs/graphql';
@Resolver()
export class PostResolver {
rows = [
{ id: '1', title: 'Первый' },
{ id: '2', title: 'Второй' },
];
@Query(() => String, { nullable: true })
post(@Args('id') id: string): string | null {
const row = this.rows.find((item) => item.id === id);
return row ? row.title : null;
}
}
Зарегистрируем класс в корневом модуле:
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { PostResolver } from './post.resolver.js';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: true,
}),
],
providers: [PostResolver],
})
export class AppModule {}
Добавьте в WorkerResolver
операцию чтения с аргументом
идентификатора, которая
возвращает имя одного работника
из массива в памяти или пустой
ответ, если строки нет.