Дима, привет! Бежать можно было в соседние файлы :) Смотри: для чтения в GraphQL используются Type и скаляры. А для входящих параметров используются InputType. В нексусе первые ты создаешь методом objectType, а вторые создаются методом inputObjectType. Для примера рассмотрим мутацию сброса пароля resetPasswordProcessor. В ней на вход требуется аргумент where: ResetPasswordProcessorWhereInput! Вот этот код: То есть здесь два параметра: User и code. А вот объявление мутации: Все. Далее смотрим уже сам резолвер. Там у нас входящие параметры доступны в объекте args (что вторым атрибутом залетает). Только обрати внимание на этот блок: К сожалению, нексус-плагин не совсем корректно генерит типы и если просто передать args.where, он там ругается. Приходится вот так более явно задавать типы. В общем, попробуй, поиграйся и если что, выливай с --no-verify, я подправлю и напишу что и как.
Дима, привет! Нет, не могу в двух словах описать. Слов и так много написано :) Важно не то, что можно будет мочь потом, а то, что можно мочь, умея работать со строками и массивами. А что потом на выходе у меня получится - это совсем другой вопрос, там будет видно в процессе.
Николай, привет! Правильно понял, что это по сути - интерфейс для управления образами докера? Как один блок для создания "низкого". Можешь в двух словах описать, что должно получиться в самом конце? Примерно, что программист на этом языке будет мочь?
Дима, у тебя там все ОК. А ошибки в IDE в таких случаях - это не редкость. Дело в том, что когда ты внес изменения в призма-схему и перегенерил все, изменилось много файлов и типов. Тайпскрипт не держит все в голове и в такой момент вполне возникают ситуации, когда в кеше тайпскрипта не актуальные типы (или он еще не увидел новые типы). В таких случаях помогает рестарт тайпскрипт-сервера. В главном меню vscode выбери View -> Command Palette, а там найди TypeScript: Restart TS Server. Кликай его. И немного жди. Занимает некоторое время. Внизу левее будет виден статус, что идет Initializing JS/TS. Как исчезнет, так ОК. Еще важный момент: vscode бывает не ту версию тайпскрипта загружает. Из-за этого разное поведение при проверке типов (бывает в IDE совсем не то, что в консоли выполняется). Что надо сделать? 1. Проверить какая версия TS установлена в зависимостях. yarn why typescript Как видим, сейчас стоит 4.4.3 Смотрим в трее справа используемую текущую версию (Важно: должен быть открыт JS или TS файл для редактирования, чтобы IDE понимала, что сейчас нужен TS, иначе этой информации в трее просто не будет). Видим, что в IDE сейчас тоже используется 4.4.3. ОК, кликаем в 4.4.3 и выбираем в выпавшем меню Select typescript version. И вот здесь как раз и кроется Дьявол: видно, что сейчас используется версия тайпскрипта, установленная в саму IDE. У меня все свежее установлено, поэтому версии и совпадают. Но часто бывает, что есть разница в версиях и бывает очень серьезная такая разница. В результате консольные команды дают одно, а в IDE мы видим другое. Надежней выбирать именно Use Workspace Version, то есть будет браться из node_modules текущего проекта.
Николай, добавил тип и запрос Like для поста: все работает, но здесь: https://github.com/linklib/gribok-prisma/blob/4ba6667eec2883af7536ba12d166c48c786bfabb/server/nexus/types/Post/index.ts#L26 IDE подсвечивает ошибку на ...like... (Property 'like' does not exist on type 'PrismaClient<PrismaClientOptions, never, RejectOnNotFound | RejectPerOperation | undefined>'.ts(2339) ) ни yarn types, ни yarn types:server ничего не находят. Я закинул коммит --no-verify на всякий случай) Не посмотришь, что это за ошибка может быть?
Судя по всему ты просто опять забыл запустить yarn dev (о чем я уже не раз напоминал). То есть в целом у тебя там было ОК, просто надо было, чтобы нексус перегенерировал методы и типы (он это делает автоматически при изменении файлов, но надо, чтобы был запущен проект). Ну и конечно надо было удалить грибы из файла постов, чтобы у тебя дублей классов не было. Отправил ПР: https://github.com/linklib/gribok-prisma/pull/1 Ну и еще момент, который, как я и предполагал, ты не победишь, хотя следовало бы. Вот ты в грибах импортируешь класс поста. Обрати внимание, что у меня такого нигде нет. В том же типе User из текущего проекта много связей на другие типы, но там нет импортов этих типов. А все почему? Потому что в "type": у меня прописываются не константы-объекты, а строчные имена этих типов. Пересмотри еще раз видео, там тоже это все показывается/рассказывается. Обращай внмиание на типы переменных (видь разницу между объектами и простыми строками).