Николай, добавляю картинку к посту. 1. Изменил схему призмы https://github.com/linklib/gribok-prisma/blob/7601402a1362dc6172f26d712f765dc9a62f51d2/prisma/schema.prisma#L59-L60 https://github.com/linklib/gribok-prisma/blob/7601402a1362dc6172f26d712f765dc9a62f51d2/prisma/schema.prisma#L131 2. Дописал тип поля в нексусе https://github.com/linklib/gribok-prisma/blob/7601402a1362dc6172f26d712f765dc9a62f51d2/server/nexus/types/Post/index.ts#L55-L60 и... не понимаю, а что дальше делать. Можешь дать направляющий пинок?

Дима, привет! >> первый код оказался более понятен. Да, первый более понятен, потому что перед глазами полностью await then/catch. А вот второй получается чуть более запутанным, потому что не понятно что это вообще за onCompleted. Но на самом деле в случае с использованием аполло-клиент такой метод более правильный, потому что в рамках АПИ данной библиотеки. Смотри официальную документацию: https://www.apollographql.com/docs/react/data/mutations/#oncompleted То есть в качестве параметра onCompleted передается функция-обработчик, которая будет вызвана в случае успешного АПИ-запроса. Плюс здесь в том числе и в том, что ты еще до вызовы непосредственно запроса прописываешь какую логику ты хочешь получить, когда запрос будет выполнен и будет выполнен успешно. Иногда такой подход более понятный с организационной точки зрения. Но, опять-таки, это кому как больше нравится и совсем не обязательно делать именно так. Но понимать такие приемы очень важно, потому что часто библиотеки пишутся так, что в них приходится передавать обработчики. Это, что называется, callback hell (Ад обратных вызовов). Есть вот даже отдельный сайт, посвященный этому явлению :)

Николай, привет! Спасибо! С промисами более-менее разобрался: первый код оказался более понятен.

Дима, привет! Вот код-ревью: https://github.com/linklib/gribok-prisma/pull/3#pullrequestreview-774002390 >> 1. Как в случае удчного добавления поста правильно учести посетителя в перечень постов или чего-нибудь ему написать? 2. Я так погнял, зто здесь тесты проходят, но не понял как. Можешь объяснить, что происходит в коде? https://github.com/linklib/gribok-prisma/blob/6295a8f9af3e9a6eff46ec6796505275426c2884/src/pages/Posts/Createpost/View/Form/index.tsx#L85-L92 Это тебе надо получше освоить промисы (Promise). У тебя есть обработчик на успешное выполнение запроса. Убедись в ответе, что объект был получен (то есть создан). Далее уже решай что с этим делать. Для примера смотри создание технологий на текущем сайте. https://github.com/freecode-academy/freecode.academy/blob/83c82a066d10320733481fac06accc961c0b00d5/src/pages/Technologies/Create/index.tsx#L77-L87 Здесь в блоке then проверяю полученную технологию if (r.data?.createTechnology) и если все ОК, то 1. Сбрасываю кеш аполло-клиента (API-клиента) (одновременно со сбросом кеша выполняется перезапрос всех активных GraphQL-запросов на странице). 2. Выполняю переход на страницу технологии. А вот еще вот этот пример глянь: https://github.com/freecode-academy/freecode.academy/blob/83c82a066d10320733481fac06accc961c0b00d5/src/pages/Topics/Topic/Create/index.tsx#L31-L44 Здесь примерно все тоже самое делается (только что кеш забыл сбросить), но обработчик на сохранение передан параметром в сам хук мутации (параметр onCompleted). Смысл тот же, но структура кода так вроде как понятней.

Всем привет! Сегодня хотел напомнить всем, что здесь можно не только просто проходить уроки, но и выполнять практические задачи и обсуждать их. Вот для примера, Дмитрий делает свой тестовый проект https://github.com/linklib/gribok-prisma и обращается со своими вопросами, например Мутации в @prisma-cms/nextjs-nexus. И плюс здесь не только в том, что мы можем обсудить какие-то теоритические аспекты, а еще и в том, что я могу видеть реальный код и могу его поправить (отправив пулл-реквест), и могу прокомментировать отдельные участки кода. Например вот только что выполнил код-ревью: https://github.com/linklib/gribok-prisma/pull/3#pullrequestreview-774002390 Так что, если вы хотите больше закреплять свои знания на практике, советую тоже заводить свои тестовые проекты и обсуждать ваши задачи и решения. Как запускать проекты локально, писал недавно здесь (если что-то не понятно будет с запуском, не стесняйтесь, спрашивайте).

Николай, привет! Посмотри, пожалуйста, коммит: https://github.com/linklib/gribok-prisma/commit/6295a8f9af3e9a6eff46ec6796505275426c2884 Можно как-то лучше сделать? И есть 2 вопроса, которые в которых нужна помощь: 1. Как в случае удчного добавления поста правильно учести посетителя в перечень постов или чего-нибудь ему написать? 2. Я так погнял, зто здесь тесты проходят, но не понял как. Можешь объяснить, что происходит в коде? https://github.com/linklib/gribok-prisma/blob/6295a8f9af3e9a6eff46ec6796505275426c2884/src/pages/Posts/Createpost/View/Form/index.tsx#L85-L92 Спасибо!

Николай, привет! Можешь одним глазком посмотреть - https://github.com/linklib/gribok-prisma/commit/e35b04bf38b2c9c23bdb78e4c4d034194e1df8a5 Вроде все работает, но на всякий случай.