NestJS entity 구성

커피 내리는 그냥 사람·2021년 4월 21일
0

기업협업 인턴십

목록 보기
11/16

기업협업 중 일부 내용에 대해서만 발췌하고 전체적인 내용은 가져올 수 없다는 점을 먼저 고지함

entity 구성 중 배운 것

django로 치면 일종의 models.py 만들기

1. 기본 flow

  1. entity 작성
  2. app모듈 수정
      synchronize: true,
      entities: [
        Cat,
        Order, 
        Attachment,
        SafeRate
      ]
    }),
    CatsModule,
    OrderModule,
    SafetyRatesModule,
  1. 엔티티에 해당하는 모듈 수정
@Module({
    imports: [TypeOrmModule.forFeature([Order, Attachment])],
    providers: [OrderResolver, OrderService],
    exports: [OrderService]

2. 하다가 생긴 의문점 및 해결

1. enum 명 정하기

enum AttachmentType{
    GOODS = "GOODS"
}

registerEnumType(AttachmentType, {name : 'AttachmentType'})

@Entity()
@InputType('AttachmentInputType', {isAbstract:true})
@ObjectType()

export class Attachment extends CoreEntity{ 


    @Field(type => AttachmentType)
    @Column( {type : 'enum', enum : AttachmentType})
    type: AttachmentType;
  • 특정 정보가 객관식처럼 선택해야하는 컬럼이 있었는데 그 때 사용한 것이 enum개념이었다. python에서는 처음 보는 개념이어서 잠시 공부하고 넘어간 개념이었고 사용법은 위와 같이 객관식을 만들어준 뒤 이넘 타입을 선언해준다. 이 때 전역변수로 선언해주는 점이 좀 특이한 부분이었다.(실제 사용은 안에서 하는데..?)

2. date, int & number 등 데이터 타입 선언

    @Field(type => Int)
    @Column()
    size: number;
  • python에서는 그저 integer처리 했으면 될 내용들이었던 것 같은데 네스트에서는 인트와 넘버를 따로 나눠서 쓰는 것이 신기했다.
    @Field(type => Date)
    @Column()
    workingTime: Date;
  • date 또한 모두 대문자 처리 해줬다. 제대로 만들어진 데이터를 보니 이상이 없는 것으로 보인다.

3. onetomany, manytoone 관계 정의

해야하는 내용 중 1:N 관계를 갖는 테이블이 각 하나씩 있었는데 파이썬에서는 정의하지 않았던 N:1 관계가 여기서는 코드로 구현 되어서 조금 신기했다.
1. 1쪽

   @Field(type => [Attachment])
    @OneToMany( type => Attachment, attachment => attachment.order)
    attachments: Attachment[];
  1. N쪽
    @Field(type => Order)
    @ManyToOne(type => Order, order => order.attachments, {onDelete:"CASCADE"})
    order: Order;
}

협업에 관한 내용이라 자세한 위의 예시까지는 쓸 수 없어 부분만 발췌하였는데 검색하면 정말 많은 결과물들이 예시로 나온다.

참고 사이트 그 중 한 곳

4. MySQL data 밀어넣는 중 발생한 오류

  • 1064(42000)
  • 실컷 데이터를 다 밀어넣고 컬럼을 만들었는데 자꾸 order에 문제가 있으니 못 읽는다는 식이었다. 알고 보니 데이터베이스명.order(테이블명) 으로 desc를 했어야 했다. 이런 경우는 처음이기도 했고 어느 곳에서도 질의응답이 안 된 내용이라 당황하긴 했다. 이번 기회에 알게 되어 기뻤다.

    주로 문법 오류

5. modeling 검토

모델링은 정말 기업 협업 내용과 밀접한 내용이라 공개가 어렵지만 굳이 적어놓자면
1. 모델링은 이상 없이 주어진 자료에 맞게 수행 됨
2. 특정 테이블이 연관성이 없는 것 제대로 이해한 것이 맞음
3. 이넘 테이블의 경우는 모델에서 처리해줬어야 했다.

이 정도로 볼 수 있을 것 같다.

3. 추후 할 일

1. entity PR dev 에서 검토 : 이상 없음

2. Mysql Workbench에 데이터 모두 올리기 : 완료

3. 추가 과제 받기 : dto / resolver / service 완료하기

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글