В этом курсе мы создадим API для проекта Medium используя NestJS, Typescript, Typeorm и PostgreSQL. Это курс полностью сфокусирован на глубокое погружение в создание реального приложения используя NestJS. Мы начнем с пустой папки и шаг за шагом мы реализуем реальное приложение. Вы изучите как структурировать ваше приложение, писать переиспользуемые и понятные модули и сервисы, разделять ваш код на небольшие кусочки. Мы будем писать вместе легко поддерживаемый код, чтобы сделать его чистым и избежать ненужной сложности.
В каждом уроке вы найдете исходный код видео, поэтому вы легко можете следить за прогрессом приложения и получить работающий проект на любом шаге.
Что вы выучите в этом курсе:
Как структурировать и настраивать NestJS проект
Как писать высококачественный код в NestJS на реальном проекте
Как создавать переиспользуемые модули, контроллеры и сервисы
Как реализовывать авторизацию
Глубоко выучите паттерны разработки на NestJS
Вам не нужно никаких предварительных знаний кроме Javascript (потому что я расскажу все с самого начала), но если у вас есть опыт в каких-то технологиях из этого списка (Angular/NodeJS/Express/Typescript/Typeorm/PostgreSQL) то для вас будет легче пройти этот курс.
Если у вас есть чувство, что вы учили NodeJS, но вам до сих пор не понятно, как создавать реальный проект от начала и до конца, то этот курс, это то, что вам нужно. Этот курс полностью сфокусирован на изучение NestJS без углубления в базовые знания NodeJS!
Посмотреть больше
Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай
NestJS - пишем API для реального проекта с нуля,
а также все другие курсы, прямо сейчас!
[Nest] 13233 - 11/16/2023, 12:03:40 PM ERROR [ExceptionsHandler] Cannot set headers after they are sent to the client
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
у меня этот баг возник и решение этого баг в middleware вам просто нужно после проверки
if (!req.headers.authorization) {
req.user = null;
//возвращать метод next()
return next();
}
dydjiik4
28 урок На данный момент метод getRepository() устарел и нужно немного теперь дополнить коннект к базе . Я нашел решение ввиде обьявление переменой моей DataSource
public readonly dataSource: DataSource,
и далее уже отталкиваюсь от это базы:
все что связано с миграциями и настройками конфигов в этом курсе уже не актульно, ничего из того что он тут делает уже не работает, некоторых свойств даже уже нету в конфигах, так что миграцию и все что с ней связано нужно будет настраивать самому по доке, а так для новичков в ноде норм
Emilvarn
для тех у кого возникает ошибка с пг POSTGRESQL ERROR: PERMISSION DENIED FOR SCHEMA PUBLIC
if (userExist) {
throw new HttpException(
'Email or username are taken',
HttpStatus.UNPROCESSABLE_ENTITY,
);
}
Anonymous
webvasenkov
spasibo
Flegcore
Это перевод?
Andrii
Flegcore
это оригинал
artemdumchykov
Я конешно без рофла, но вступление каждого видео это, даже не знаю плакать или смеяться, совет, просто выключайте монитор или закрывайте глаза, зачем вебку, это мода такая, ладно там в 1 уроке, приветствие какой-то, но в каждом, можно было сделать обычную презенташку с темой урока и что будет изучать проходить, а не рассказывать еще с вебкой на весь моник что изучали и что будем изучать, у меня время уходит чтобы забыть кошмар который я увидел и потом сосредоточится на уроке и то вебка в углу экрана тупо отвлекает, хочется с матами
this.is.amigogo
artemdumchykov
Чел...
Jackie
artemdumchykov
да нормально. На русском он хорошо объясняет. Есть такой же его курс, где он на очень кривом английском говорит, там невозможно слушать. Я как раз оттуда сюда и пришел. Автор молодец, ему надо только работать над английским произношением
razer
typeorm проблема с union запросами
razer
Все работает из коробки "start:dev": "TEST=111 nest start --watch", или через cross-env не нужно ничего городить
razer
Как в плеере уменьшить качество видео?
romakremko
Здравствуйте, спасибо за курс, подскажите, а где можно взять ссылку на git этого проекта?
danildemchenkowp
Хороший курс, для старта самое то. Чел достаточно подброно и внятно объясняет. Советую всем, кто хочет начать разобраться с Нэстом.
Кстати, после экспресса, Нэст - просто сказка
Anonymous
Неправильно в 30 уроке указал автор логику:
queryBuilder.andWhere('articles.authorId IN (:...ids)', { ids });
Правильно будет:
queryBuilder.andWhere('articles.id IN (:...ids)', { ids });
Сначала сидел повторял, не заработало, ломал голову, потом врубился в чем проблема.
cyberpunk_10
Anonymous
Спасибо)
Anonymous
Anonymous
Да, я вот тоже несколько раз просматривал часть этого видео в попытке понять его логику :)
Он же ищет `id` пользователя, в массиве с идентификаторами статей.
somebody
Подскажите, кто шарит, относительно момента с созданием типа UserType в 15 уроке. Действительно ли стоит так заморачиваться и создавать UserType? Не проще ли просто сделать hashPassword необязательным в UserEntity, добавив вопросительный знак -> `async hashPassword?()`?
Anonymous
Хороший курс, подача материла, качество видео и звука, все просто и понятно, посмотрел за пару дней)
kamenskiyyyy
Замечательный курс и хорошая подача материала! Информация преподносится в мельчайших подробностях и легко усваивается)
Random
У человека явно нету опыта с нестом, подглядывает в монитор даже при написании елементарной гарды
Grizix
Random
Этот человек, в свое время очень сильно помог! Он очень хороший разработчик и ментор!
somebody
Random
Он смотрит на код, который пишет. Что не так?
Anonymous
Ну что за редактор такой ужасный?
webvasenkov
Anonymous
This editor is the best in the world.
Isildur
Anonymous
сразу вспомнилась кремниевая долина :D https://youtu.be/AXLoRpKnK8U?t=114
robotpixelteh@gmail.com
Anonymous
Знакомся это Vim. И в принципе если его нормально настроить то на нем можно работать
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Я разработчик FullStack с более чем 10-летним опытом. Я одержим чистым кодом и изо всех сил стараюсь, чтобы в моих курсах был максимально чистый код. Мой стиль преподавания очень прост, я не буду тратить слишком много времени на объяснение всех способов, которыми вы можете создать что-то или другую ненужную информацию, чтобы увеличить продолжительность моих лекций. Если вы хотите быстро научиться чему-то, этот курс для вас.
В этом курсе мы создадим небольшое приложение REST API - все о Кофе. Курс рассчитан на постепенный рост. Если вы пишете код вместе с ходом курса, обязательно проходите все уроки и главы по порядку. Таким образом, вы не пропустите ни одного совета, передового опыта или настройки кода, которые мы будем использовать в будущих уроках.
NestJs: современные способы создания API с помощью Typescript и NestJs
NestJs: Modern ways to build APIs with Typescript and NestJs
Пошаговое руководство по созданию Restful и GraphQL API с Node.Js, Nest.Js, MongoDB, Mysql, Postgres, Typescript. Nest.js - это прогрессивная среда Node.js для создания эффективных, надежных и масштабируемых серверных приложений.
Поздравляю! Вы нашли полное руководство по созданию корпоративных приложений с помощью NestJS. NestJS - это бэкэнд-фреймворк, используемый для создания масштабируемых и надежных API. Это фреймворк с батарейным питанием; он включает инструменты для обработки практически всех возможных вариантов использования, от сохранения данных до валидации, управления конфигурацией, тестирования и многого, многого другого. Этот курс поможет вам освоить Nest.
[Nest] 13233 - 11/16/2023, 12:03:40 PM ERROR [ExceptionsHandler] Cannot set headers after they are sent to the client
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
у меня этот баг возник и решение этого баг в middleware вам просто нужно после проверки
if (!req.headers.authorization) {
req.user = null;
//возвращать метод next()
return next();
}
public readonly dataSource: DataSource,
и далее уже отталкиваюсь от это базы:
const queryBuilder = this.dataSource
.getRepository(ArticlesEntity)
.createQueryBuilder('articles')
.leftJoinAndSelect('articles.author', 'author');
ormconfig.ts
export const config: DataSourceOptions = {
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'usermediumclone',
password: '123',
database: 'mediumclone',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: false,
migrations: [__dirname + '/migrations/**/*{.ts, .js}'],
migrationsRun: true,
};
const dataSource = new DataSource(config);
export default dataSource;
scripts:
"typeorm": "yarn build && npx typeorm -d dist/ormconfig.js",
"db:create": "yarn typeorm -- migration:generate",
"db:migrate": "yarn typeorm -- migration:run",
"db:revert": "yarn typeorm -- migration:revert"
Terminal:
yarn migration:generate -- ./src/migrations/{Name migration}
yarn migration:run
async findBySlug(slug: string): Promise {
return this.articleRepository
.createQueryBuilder('article')
.leftJoinAndSelect('article.author', 'author')
.where('article.slug = :slug', { slug })
.getOne();
}
https://www.cybertec-postgresql.com/en/error-permission-denied-schema-public/
where: [
{ email: createUserDto.email },
{ username: createUserDto.username },
],
});
if (userExist) {
throw new HttpException(
'Email or username are taken',
HttpStatus.UNPROCESSABLE_ENTITY,
);
}
Кстати, после экспресса, Нэст - просто сказка
queryBuilder.andWhere('articles.authorId IN (:...ids)', { ids });
Правильно будет:
queryBuilder.andWhere('articles.id IN (:...ids)', { ids });
Сначала сидел повторял, не заработало, ломал голову, потом врубился в чем проблема.
Он же ищет `id` пользователя, в массиве с идентификаторами статей.