-
Урок 1. 00:06:54Какие технологии мы будем использовать?
-
Урок 2. 00:02:38Что мы будем реализовывать?
-
Урок 3. 00:10:38Генерируем проект
-
Урок 4. 00:11:36Создаем модуль и контроллер тегов
-
Урок 5. 00:08:36Создаем сервис для тегов
-
Урок 6. 00:13:32Настраиваем абсолютные пути
-
Урок 7. 00:11:41Устанавливаем Postgres
-
Урок 8. 00:07:43Конфигурируем базу данных
-
Урок 9. 00:10:32Создаем сущность тега
-
Урок 10. 00:15:08Начинаем работать с репозиторием тегов
-
Урок 11. 00:13:48Знакомимся с миграциями
-
Урок 12. 00:08:30Подготавливаем запрос для регистрации
-
Урок 13. 00:07:35Что такое DTO?
-
Урок 14. 00:14:26Создаем сущность пользователя
-
Урок 15. 00:17:47Генерируем JWT токен
-
Урок 16. 00:10:07Знакомимся с валидацией
-
Урок 17. 00:15:46Реализуем логин запрос
-
Урок 18. 00:24:00Middleware авторизации
-
Урок 19. 00:09:25Создаем декоратор для пользователя
-
Урок 20. 00:08:04Guard для авторизации
-
Урок 21. 00:10:39Обновление текущего пользователя
-
Урок 22. 00:12:19Создание модуля статьи
-
Урок 23. 00:17:06Создание метода статьи
-
Урок 24. 00:09:40Заканчиваем создание статьи
-
Урок 25. 00:06:30Реализуем получение статьи по слагу
-
Урок 26. 00:08:45Имплементируем удаление статьи
-
Урок 27. 00:10:59Создаем обновление статьи
-
Урок 28. 00:24:50Создаем фид
-
Урок 29. 00:17:04Реализуем лайк статей
-
Урок 30. 00:17:47Реализуем дизлайк статей
-
Урок 31. 00:12:42Готовим сид данные для нашей базы
-
Урок 32. 00:16:27Реализуем получение профиля
-
Урок 33. 00:12:04Имплементируем фоллоу пользователей
-
Урок 34. 00:08:03Реализуем анфоллоу пользователей
-
Урок 35. 00:14:53Создаем фид текущего пользователя
-
Урок 36. 00:18:26Улучшаем бекенд валидацию
-
Урок 37. 00:13:07Тестируем API на реальном фронтенде
-
Урок 38. 00:01:54Домашнее задание
- Категории
- Источники
- Все курсы
- Разделы
- Книги
[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` пользователя, в массиве с идентификаторами статей.