FreeCode.Academy

Стратегии обучения

Уроки

Технологии

Участники

Проекты

Топики

Блоги

Офис

О проекте

Николай Ланец
Николай Ланец
Мутации в @prisma-cms/nextjs-nexus
Дима, привет!

Бежать можно было в соседние файлы :)

Смотри: для чтения в GraphQL используются Type и скаляры. А для входящих параметров используются InputType. В нексусе первые ты создаешь методом objectType, а вторые создаются методом inputObjectType.

Для примера рассмотрим мутацию сброса пароля resetPasswordProcessor. В ней на вход требуется аргумент where: ResetPasswordProcessorWhereInput!


Вот этот код:

export const ResetPasswordProcessorWhereInput = inputObjectType({ name: 'ResetPasswordProcessorWhereInput', definition(t) { t.nonNull.field('User', { type: 'UserWhereUniqueInput', }) t.nonNull.id('code') }, })
То есть здесь два параметра: User и code.

А вот объявление мутации:

export const ResetPasswordExtendMutation = extendType({ type: 'Mutation', definition(t) { // ... t.nonNull.field('resetPasswordProcessor', { type: 'AuthPayload', args: { where: nonNull('ResetPasswordProcessorWhereInput'), }, resolve: resetPasswordProcessor, }) }, })
Все. Далее смотрим уже сам резолвер. Там у нас входящие параметры доступны в объекте args (что вторым атрибутом залетает). Только обрати внимание на этот блок:
const code = args.where.code const whereUser = args.where.User as Prisma.UserWhereUniqueInput
К сожалению, нексус-плагин не совсем корректно генерит типы и если просто передать args.where, он там ругается. Приходится вот так более явно задавать типы. В общем, попробуй, поиграйся и если что, выливай с --no-verify, я подправлю и напишу что и как.