
MonsterLessons
MonsterLessons - проект, сделан с душой (мы так думаем), где собрана годная серия уроков разных направлений фронтенда. Спасибо создателям за проект.
NestJS — один из самых мощных фреймворков для разработки серверных приложений на Node.js. В этом курсе вы шаг за шагом создадите полноценное API для проекта наподобие Medium: от настройки окружения до реализации ключевых модулей, авторизации и интеграции с базой данных. Курс ориентирован на практику, поэтому вы будете писать реальный код, формируя навыки, которые применимы в настоящих продакшн‑проектах.
Курс построен так, чтобы дать вам глубокое понимание архитектуры NestJS и научить создавать масштабируемое и поддерживаемое серверное приложение с нуля. Вместе мы разберём полноценный рабочий процесс: от структуры проекта до оптимизации модулей и сервисов.
Каждый урок сопровождается исходным кодом, что позволяет легко отслеживать прогресс и при необходимости возвращаться к любой стадии разработки.
Вы освоите подходы к проектированию серверного приложения: модульность, инъекцию зависимостей, разделение ответственности и создание чистой структуры проекта.
Мы будем писать легко читаемые и переиспользуемые модули, контроллеры и сервисы, следуя лучшим практикам NestJS и общим шаблонам проектирования.
Предварительно вам достаточно знать только JavaScript. Если у вас есть опыт с Angular, Node.js, Express, Typescript, TypeORM или PostgreSQL — обучение пойдёт ещё быстрее, но это не является обязательным.
Если вы чувствуете, что изучали Node.js, но по‑прежнему не понимаете, как собрать полноценный проект с нуля — этот курс поможет закрыть пробелы и сформировать уверенность в разработке серверных приложений.
Он избавляет от лишней теории и сосредотачивает вас на самом важном — создании настоящего backend‑проекта на NestJS. Это идеальный путь, чтобы перейти от знаний по отдельным технологиям к пониманию полной картины разработки.
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум

MonsterLessons - проект, сделан с душой (мы так думаем), где собрана годная серия уроков разных направлений фронтенда. Спасибо создателям за проект.

Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.
[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` пользователя, в массиве с идентификаторами статей.