이야기를 나눠요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
맛집 지도앱 만들기 (React Native + NestJS)
hook 이나 utils 함수 작성시
안녕하세요 강의 잘 듣고 있습니다. 함수 작성 하실 때 화살표 함수 말고function 으로 함수를 작성하시는 이유가 있나요? 검색을 해도 큰 차이는 없어 보이는데취향 차이로 알고 있어도 될까요? 감사합니다.
-
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - Part 1 NestJS Core
docker + typeorm + nestjs 관련 질문드립니다!
수업 따라가면서 현재 typeorm으로 테이블까지 생성했습니다.강의 한편을 2~3번 돌려보면서 notion에 내용 정리하고, 이해 안되는 부분은 구글링 하면서 공부하고 있는데 제가 제대로 이해 하고 있는게 맞는지 질문 드리고자 합니다. 첫번째는 docker-compose로 컨테이너를 운영하는데, 현재 강의에서는 postgres image 를 컨테이너에서 사용하고, volumes 에서 마운트해서 사용하고 있기 때문에 따로 로컬 pc에서 따로 postgres 를 다운로드 및 설치를 안해도 잘 작동되는 거로 이해 하는게 맞는지 궁금합니다. 두번째는 posts.entity.ts에서 typeorm으로 생성한 테이블이 로컬호스트에 저장이 되는데, 이것도 마찬가지로 컨테이너의 postgres 폴더와 마운트되어있기 때문에 자동으로 컨테이너에 저장이 되는 구조가 맞는지도 궁금합니다!
-
Slack 클론 코딩[백엔드 with NestJS + TypeORM]
테스트를 위한 객체 오류와 createQueryBuilder 사용 방법 질문있습니다!
안녕하세요.제로초님 유닛테스트쪽 강의 듣고 프로젝트에 유닛테스트를 적용시켜보고 있는데요!2가지에서 많이 막히고 있습니다. 데이터를 변수에 임시로 넣어주고 원하는 결과값 , 즉 toBe 쪽에 변수를 넣어주려고 하는 도중 계속 아래 오류가 발생하고 있습니다. 오류 메세지가 post 유형에는 없고.. hashtag 유형에 있다는 거면 제대로 작성한거 아닌가요..?// 오류내용 Property 'post' is missing in type '{ id: number; postId: number; hashtag: string; createdAt: Date; }' but required in type 'Hashtag'. post.entity.ts import { PostType } from 'src/enum/postType.enum'; import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, OneToMany, } from 'typeorm'; import { Hashtag } from './hashtag.entity'; @Entity('posts') export class Post { @PrimaryGeneratedColumn() id!: number; @Column() type!: PostType; @Column() title!: string; ... 생략 @CreateDateColumn({ name: 'created_at' }) createdAt!: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt!: Date; @OneToMany(() => Hashtag, (hashtag) => hashtag.post) hashtags: Hashtag[]; } hashtag.entity.tsimport { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, ManyToOne, JoinColumn, } from 'typeorm'; import { Post } from './post.entity'; @Entity('hashtags') export class Hashtag { @PrimaryGeneratedColumn() id!: number; @Column({ name: 'post_id' }) postId: number; @Column() hashtag!: string; @CreateDateColumn({ name: 'created_at' }) createdAt!: Date; @ManyToOne(() => Post, (post) => post.hashtags) @JoinColumn({ name: 'post_id' }) post: Post; } createQueryBuilder, leftJoinAndSelect, where, getOne 이거를 findOne 처럼 전부 만들어줘야 하는 것인가요..? 아래는 제가 서비스에서 사용했던 레포입니다! (테스트 파일 아닙니다!) this.postRepository .createQueryBuilder('posts') .leftJoinAndSelect('posts.hashtags', 'hashtags') .where('posts.id = :id', { id }) .getOne(); createQueryBuilder를 사용하는 강의가 없어서 검색중에 어떤 글을 발견하고 따라해봤지만 막혀서 질문 드립니다 ..! createQueryBuilder 이걸 사용하기 위해서는 어떤 방식으로 만들어야 하는건가요???만약 아래처럼 만들었다고 해도 강의에서는 expect 안에 service.함수명 이런식으로 호출하시던데 만약 createQueryBuilder를 사용하게 되면 repository.createQueryBulder().leftAndJoin.... 이런식으로 똑같이 만들어주는건가요..?? 유닛테스트 작업이 처음이라 계속 막히는 것 같습니다...const MockPostRepository = () => { createQueryBuilder: jest.fn().mockReturnValue({ leftAndJoin: jest.fn().mockReturnThis(), where: jest.fn().mockReturnThis(), getOne: jest.fn().mockReturnThis(), }); }; describe('PostService', () => { let postService: PostService; let postRepository: MockRepository<Post>; beforeEach(async () => { // 가짜 모듈 생성 const module = await Test.createTestingModule({ providers: [ PostService, // 실제 디비가 아닌 목업 디비로 연결해서 사용하기 위함 { provide: getRepositoryToken(Post), useValue: MockPostRepository(), }, ], }).compile(); // 가짜 모듈을 postService 변수에 담아줌 postService = module.get<PostService>(PostService); postRepository = module.get<MockRepository<Post>>(getRepositoryToken(Post)); }); });
-
따라하며 배우는 NestJS
[해결]EntityMetadataNotFoundError: No metadata for "BoardRepository" was found
왠만하면 최신버전으로 진행하느라 @nestjs/typeorm@10.0.0 typeorm@0.3.x로 진행중에 만난 오류입니다. 해당 강좌 커뮤니티에 검색해보면 나오지만,typeorm의 버전이 0.2.x와 0.3.x의 사용법 차이로 생기는 문제입니다. --해결법--npm i typeorm@0.2.45를 통해 typeorm의 버전을 낮춰 줍니다.(@nest/typeorm은 그냥 높은 버전 썼습니다) board.service.ts1-1 constructor( @InjectRepository(BoardRepository) private boardRepository:BoardRepository ){}-> InjectRepository를 Repository에서 Entity로 변경 constructor( @InjectRepository(Board) private boardRepository:BoardRepository ){} 1-2const found = await this.boardRepository.findOneBy({id})->typeorm0.3의 문법을 0.2의 문법으로 변경const found = await this.boardRepository.findOne(id) board.module.ts@Module({ imports: [ TypeOrmModule.forFeature([BoardRepository]) ], controllers: [BoardsController], providers: [BoardsService] })->forFeature()의 Repository를 Entity로 변경@Module({ imports: [ TypeOrmModule.forFeature([Board]) ], controllers: [BoardsController], providers: [BoardsService] }) 이렇게 변경하면 잘 되는거 같습니다. 이대로 강의 진행해보고 typeorm0.3 진행해봐야겠네요~
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
nestjs s3 파일업로드 진행중인데 Buffer속성이 없어요
nestjs s3 파일업로드 진행중인데 속성이 fieldname originalname encoding mimetype destination filename path size까지만 있고 buffer속성이 없네요... 어디갔죠 아무리 뒤져봐도 안나옵니다..
-
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Ubuntu 설치 시
안녕하세요. 강의 시작시, 사용중인 PC(노트북)의 OS를 Linux(Ubuntu)로 변경하는 게 조금 부담이 있어, Virual Machine 을 설치하여 해당 강의를 수강하여도 무방할까요?? 현재 PC(노트북)의 Memory는 16GB입니다.
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
cron, trigger
안녕하세요 강의 수강 후 팀원들과 웹 서비스 개발에서 백엔드를 맡고 있는 수강생입니다. 저희 서비스에서 db에 생성된 데이터가 생성될 때 지정한 날짜와 시간을 기준으로 24시간 후에 해당 데이터의 특정 컬럼 값의 상태가 변하는 제공되는 기능을 구현 중에 질문이 생겼습니다.해당 기능에서 cron 스케쥴러를 이용하는 것과 db단에서 trigger를 사용하여 처리하는 것 중 trigger를 사용할까 싶은데 trigger 사용시 db 복잡도가 너무 증가하지 않을까 싶어서 질문 드립니다. 참고로 db는 postgresql을 사용하고 typeorm 사용 중 입니다!
-
탄탄한 백엔드 NestJS, 기초부터 심화까지
중복코드 제거 공유
let error = exception.getResponse(); if (typeof error === 'string') { error = { error }; } response.status(status).json({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, ...error, });문법공부는 따로 안해서, 더 좋은 방법이 있겠지만..
-
지금 당장 NestJS 백엔드 개발 [ToDo 리스트]
소스코드 링크가 바뀐거 같습니다.
https://github.com/vipick/todo-api-nestjs 이 링크로 이름이 바뀐게 맞을까요?
-
Prisma로 알아보는 postgreSQL와 mongoDB
따라쳐야할 곳들이 너무 빨리 지나갑니다.
안녕하세요.강의를 보면서 중간중간 따라쳐야 할 곳들이 너무 빠르게 지나가서 방향키와 스페이스를 이용해서 그 부분을 딱 맞춰서 멈추고 따라치기가 힘든 경우가 계속 발생하네요. 이점 감안하셔서 따라 쳐야할 곳에 표기 + 잠깐의 지연 타임 정도로 영상 수정하시면 이후 수강자들이 많이 편해질듯싶습니다.좋은 강의 감사합니다.