В этом курсе мы создадим 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
Это перевод?
HashMap
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
Этот человек, в свое время очень сильно помог! Он очень хороший разработчик и ментор!
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Я разработчик 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` пользователя, в массиве с идентификаторами статей.