
MonsterLessons
MonsterLessons - проект, сделан с душой (мы так думаем), где собрана годная серия уроков разных направлений фронтенда. Спасибо создателям за проект.
В этом курсе мы создадим API для проекта Medium используя NestJS, Typescript, Typeorm и PostgreSQL. Это курс полностью сфокусирован на глубокое погружение в создание реального приложения используя NestJS. Мы начнем с пустой папки и шаг за шагом мы реализуем реальное приложение. Вы изучите как структурировать ваше приложение, писать переиспользуемые и понятные модули и сервисы, разделять ваш код на небольшие кусочки. Мы будем писать вместе легко поддерживаемый код, чтобы сделать его чистым и избежать ненужной сложности.
В каждом уроке вы найдете исходный код видео, поэтому вы легко можете следить за прогрессом приложения и получить работающий проект на любом шаге.
Что вы выучите в этом курсе:
Как структурировать и настраивать NestJS проект
Как писать высококачественный код в NestJS на реальном проекте
Как создавать переиспользуемые модули, контроллеры и сервисы
Как реализовывать авторизацию
Глубоко выучите паттерны разработки на NestJS
Вам не нужно никаких предварительных знаний кроме Javascript (потому что я расскажу все с самого начала), но если у вас есть опыт в каких-то технологиях из этого списка (Angular/NodeJS/Express/Typescript/Typeorm/PostgreSQL) то для вас будет легче пройти этот курс.
Если у вас есть чувство, что вы учили NodeJS, но вам до сих пор не понятно, как создавать реальный проект от начала и до конца, то этот курс, это то, что вам нужно. Этот курс полностью сфокусирован на изучение NestJS без углубления в базовые знания NodeJS!
MonsterLessons - проект, сделан с душой (мы так думаем), где собрана годная серия уроков разных направлений фронтенда. Спасибо создателям за проект.
Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.
Я разработчик FullStack с более чем 10-летним опытом. Я одержим чистым кодом и изо всех сил стараюсь, чтобы в моих курсах был максимально чистый код. Мой стиль преподавания очень прост, я не буду тратить слишком много времени на объяснение всех способов, которыми вы можете создать что-то или другую ненужную информацию, чтобы увеличить продолжительность моих лекций. Если вы хотите быстро научиться чему-то, этот курс для вас.
В этом курсе мы создадим небольшое приложение REST API - все о Кофе. Курс рассчитан на постепенный рост. Если вы пишете код вместе с ходом курса, обязательно проходите все уроки и главы по порядку. Таким образом, вы не пропустите ни одного совета, передового опыта или настройки кода, которые мы будем использовать в будущих уроках.
Пошаговое руководство по созданию 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` пользователя, в массиве с идентификаторами статей.