Мутация GraphQL в Nest
Клиент умеет только читать данные, а новый заголовок на сервере появляется лишь после правки кода и перезапуска. Без операции записи массив в памяти не растёт из GraphQL.
Метод с Mutation меняет
состояние: принимает аргументы
так же, как чтение, дописывает
строку в массив класса
и возвращает то, что клиент
должен увидеть после сохранения.
Резолвер по-прежнему живёт
среди провайдеров модуля
без базы данных.
Покажем на примере постов:
import { Args, Mutation, Resolver } from '@nestjs/graphql';
@Resolver()
export class PostResolver {
titles: string[] = ['Первый'];
@Mutation(() => String)
addPost(@Args('title') title: string): string {
this.titles.push(title);
return title;
}
}
Подключим резолвер к GraphQL в корне:
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
операцию записи, которая
принимает имя, добавляет
его в массив класса
и возвращает сохранённую
строку клиенту.