Попов Дмитрий
13 окт. 2021 г., 15:26

@gribok-prisma: добавление поля гриба в создание поста

Николай, привет! Добавляю поле mashroomId в форму добавления поста. И застопорился: добавил селект тестовым объектом для списка, но добавлять пост при выбранном пункте списка категорически отказывается, ссылка в проекте http://localhost:3000/posts/createpost Коммит с --no-verify, так как не могу понять, чего TS ругается на options https://github.com/linklib/gribok-prisma/blob/35d5fa4b1284893032fa5caa70f9212914c28f38/src/pages/Posts/Createpost/View/Form/index.tsx#L140 Коммит: https://github.com/linklib/gribok-prisma/commit/35d5fa4b1284893032fa5caa70f9212914c28f38 Можешь посмотреть, в чем затык?

Привет, ты ошибся почтой, удачи

Привет, Kostya Lopatin! А на какую почту пришло?

Да никто ни с чем не ошибся. На почту отправилось уведомление о новом топике. Константин, если не хотите получать такие уведомления, зайдите в свой профиль и снимите галочки с настроек уведомлений.

Дима, привет! Сейчас гляну все.

добавил селект тестовым объектом для списка, но добавлять пост при выбранном пункте списка категорически отказывается, Это потому что ты не вывел в поле сообщение об ошибке. Точнее ты скопипастил и передал в селект параметр error, но там он не обрабатывается. Вот я вывел сообщение. И вот ошибка: Суть в том, что в селект ты в качестве value передаешь не текстовый айдишник, а сам объект Option. На onChange и устанавливается не текстовый id, а целиком объект. Вот и косяк. Решение: писать свой обработчик onChange. Вот сейчас все корректно работает. >> Коммит с --no-verify, так как не могу понять, чего TS ругается на options Да, с TS там не все так просто. Селект (<select>) же в себе содержит множество опшенов (<option>), и в него надо передать заданный тип, плюс этот тип учитывать и в других местах. В общем, это темный лес. Я написал все и отправил ПР, надеюсь ты разберешься.

Спасибо, изучаю! Решил перед картинками что-то проще добавить.

Постарался разобраться с изменениями, но не очень понял - может позже придет понимание. Следующий вопрос не задержался: почему может поле mashroomId не записываться в БД, пост создается, а mashroomId = NULL?

Так ты смотри свой резолвер. Где тут mashroomId?

Спасибо! Еще учиться и учиться...

Николай, привет! Добавил - даже работает. Можешь посмотреть код: норм, не норм? https://github.com/linklib/gribok-prisma/commit/d19cb1cd75589dbc80d8a7cd48fe00b32e96b24b

Дима, привет! Нет, не ОК. У тебя работает все, только потому что ты каждый раз передаешь mashroomId. Но это-то не обязательное поле. И что будет, если его не передать? Правильно, ошибка: Потому что ты в резолвере пишешь "Подключи сюда гриб", а призма в ответ "А какой именно? Идентификатор-то не указан. Я мухожук". Отправил ПР. Обрати внимание в нем на указанный тип Prisma.PostCreateInput. Если его не указать (а просто создать переменную с заданным объектом-свойством), то ты не сможешь ниже по условию добавить в него дополнительное свойство (TypeScript не позволит, потому что тип изначальной переменной будет ограничен ее заданным значением).

Спасибо! Разбираюсь

Добавить комментарий