Дима, привет!
createdById - с маленькой буквы. А ты что пишешь? CreatedById с большой буквы. Ты бы хотя бы Ctrl + Space нажал, тебе вскод подсказал бы.
В наименовании поля тоже перепутал, написал t.nonNull.field('CreatedById' (с большой буквы).
И здесь ты в целом не очень хорошо поступил. На примере того же "правильного" поля mashroomId: У тебя в БД mashroomId - это строка (в призма-схеме), а связанный объект - Mashroom. А ты у себя в нексусе эти строчные поля перебиваешь объектами. Это не хорошо. Получается, если тебе нужен будет всего-лишь id связанного объекта, тебе придется прям запрашивать этот объект. Представь, ты получаешь список сотни объектов и к ним надо будет id связанных объектов: на получение списка у тебя будет 1 запрос, а потом на каждый объект еще сотня запросов. А если ты и второй связанный объект захочешь, то еще сотня запросов. И все это без необходимости. Резюме: строчное поле должно возвращать строчное значение. Для объектов делай другое поле.
И еще, вот ты гриб сделал не обязательным полем, а кем создано - обязательным. Я тебе говорил: это не хорошая практика, она будет от тебя требовать в каждом запросе прописывать запрос и на связанный объект.
Переделывай, я не буду тебе сейчас отправлять ПР. Подсказок достаточно.
Николай, привет!
Опять за помощью.
Сунулся писать запросы в src/gql для Post и понял ,что не описал два поля в нексусе, вот они: https://github.com/linklib/gribok-prisma/blob/dd425ab13f0eb0338a829193d4a1a5a9ad656acf/server/nexus/types/Post/index.ts#L25-L43
И mashroomId - без ошибок, а вот CreatedById - пишет, что нет такого свойства в Post.
Можешь посмотреть, я вообще правильно описываю эти поля и если да, то почему проблема возникла?
Да, ругается на null. Это давняя проблема и вроде в новой версии нексус-плагина ее решили, но это новый плагин без обратной совместимости, я пока на него не переходил. Так что ёжики плакали, кололись, но продолжали есть кактус :)
Можно сделать так:
То есть прописать title === null ? undefined : title. TypeScript здесь понимает, что если прилетел null, то будет undefined. Таким образом в титл не может попасть null.
И здесь важно понимать почему нельзя передавать так: title || undefined. Дело в том, что пустая строка "" тоже расценивается как отрицательный результат. Таким образом, если прелетит пустая строка (что технически возможно и допустимо), то вместо нее будет передано undefined и данное поле не будет обновлено.
И да, можешь на фронт перелезать. Для начала просто выведи списки (то есть создай страницу для вывода, запроси данные и выведи их). Можешь для примера посмотреть страницу вывода списка пользователей. Да и в репозитории самого freecode.academy можешь смотреть. Там примеров много и все по одному образу и подобию.
Прочитал: так-то всё понятно и знаю, но не в каждый момент времени. Исправлюсь.
Посмотри, пжл, коммит: https://github.com/linklib/gribok-prisma/commit/14be6513cedfe64c5d0e8d6f38afe72c86b83874
Для закрепления делаю апдейт поста и все бы ничего, но тайпскрипт ругается на https://github.com/linklib/gribok-prisma/blob/14be6513cedfe64c5d0e8d6f38afe72c86b83874/server/nexus/types/Post/resolvers/updatepost.ts#L35-L36
Подозреваю, что прилететь может null, а в типах это не указано. Верно подозреваю?
И я перелизаю на фронт? Запрос постов, создание и редакция? Что взять за пример?
Смотрите, тут надо видеть разницу между конечным отображением и первичным вводом данных. Программы выводят текст как правило с использованием форматирования. Когда они встречают такие спецсимволами, они их используют в форматировании (при этом часто преобразовывают). Вот посмотрите, что выводится консолью:
То есть мы ввели как есть исходную строку, а консоль на выходе отформатировала этот текст.
Что же касается табуляции: в некоторых программах она может быть заменена на какое-то количество символов пробелов. При этом в зависимости от ностроек (сколько пробелов используется вместо знака табуляции) будет зависеть реальная ширина. К примеру, у меня указано 2 символа, у кого-то может быть 4 или какое другое число. То есть на входе будет один символ табуляции, а на выходе будет куча пробелов.
Первая линия
\Вторая линия
ThirdLine Просто я думал, что должно выводиться именно так... Здесь же нет табуляции...
Вячеслав, я не очень понял вопрос. В одном из требований задачи указано: "myStr should contain a tab character \t which follows a newline character", то есть переменная myStr должна содержать спецсимвол \t (табуляция). Что именно тут не так?
Зачем тут табуляция? Я не понял...