Nest.js/TypeOrm
-
typeorm-extension 사용시 seedNest.js/TypeOrm 2024. 12. 13. 12:47
EntityMetadataNotFoundError: No metadata for https://github.com/tada5hi/typeorm-extension/issues/387 Bug: EntityMetadataNotFoundError: No metadata for "Entity" was found. · Issue #387 · tada5hi/typeorm-extensionVersions Node: 18.4 OS: MacOS 13 Reproduction My project - https://github.com/golubvladimir/pizza-app/tree/backend/add-seeding Seeders and factories - https://github.com/golubvladimir/piz..
-
TypeORM 쿼리빌더 사용시 where절 사용시 괄호 우선순위와 Brackets 사용Nest.js/TypeOrm 2024. 8. 10. 16:27
TypeORM의 쿼리빌더 사용시에 where절을 사용하는 메서드 where, andWhere, orWhere 사용시에 괄호를 사용하여 where절에 사용하고 싶으면 Brackets를 사용하면 된다.SelectQueryBuilder.d.ts Brackets 사용 괄호로 감싸주고 싶을때 사용 WHERE "a"."isPublic" = true OR "a"."memberId" = '410b7202-660a-4423-a6c3-6377857241cc' AND "a"."isPublic" = false 실제 쿼리 인데 OR 뒤의 부분을 괄호를 이용하여 감싸고 싶을때 사용 하면된다. WHERE "a"."isPublic" = true OR ("a"."memberId" = '410b7202-660a-4423-a6c3-6..
-
TypeOrm에서 queryBuilder사용시 관계 데이터 집계 결과를 order by 하는 방법Nest.js/TypeOrm 2024. 8. 8. 02:32
결론부터 말하는 아직 방법을 찾지 못했다. 생각보다 원하는 방향으로 참고 할 만한 자료를 찾지 못했다. addSelectloadRelationCountAndMap두가지 방법을 사용해서 하는 방법이 있지만 둘다 동작하지 않는다. loadRelationCountAndMap 첫번째 인자값은 가상의 프로퍼티를 entity에 생성해주고 해당 프로퍼티를 넣어주고두번째 인자값은 관계대상의 @ManyToOne에서 post가 가르키는 post.comments를 넣어주고세번째 인자값은 alias 이름을 넣어준다. 하지만 loadRelationCountAndMap 사용은 굉장히 구리다. 일딴 무조건 getMany랑 함께 사용 해야 하는데 getMany를 사용하게 되면 select 칼럼들을 alias 할 수 없다. getM..
-
TypeOrm과 js-joda를 이용한 Date타입 대신 LocalDateTime 타입 사용하기Nest.js/TypeOrm 2024. 7. 6. 20:40
js-joda에서 제공 하는 타입은 다음과 같다.LocalDate : 년,월,일 타입LocalTime : 분,초 타입LocalDateTime : 년,월,시,분,초 타입ZonedDateTime: joda/timezone과 함께 사용하며 특정 국가의 timezone에 따른 타입이외에 다른 기능들은 공식문서에 설명이 되어 있다. @js-joda/core 라이브러리를 설치 한다. TypeOrm의 column 데코레이터의 transformer 프로퍼티와 ValueTransformer를 이용하여 js-joda를 이용하여 날짜 데이터 타입을 보다 효율적으로 다룰 수 있다.js-joda에서 Convert from/ to native js 부분을 참고 utils/convert-date-time.ts transforme..
-
TypeOrm과 Postgresql에서 timestamp을 UpdateDateColumn 데코레이터 사용시 transformer 이슈Nest.js/TypeOrm 2024. 7. 6. 19:01
@UpdateDateColumn 사용시 transformer 프로퍼티 옵션을 사용하면 onUpdate CURRENT_TIMESTAMP가 동작하지 않는다.무슨 말이냐면 @CreateDateColumn, @UpdateDateColumn 데코레이터 사용해서 데이터를 생성 하면 현재 date-time을 자동으로 데이터를 입력 해주는데 만약 필드에 변경이 일어날 경우에 UpdateDateColumn에서 업데이트 된 기준 일자로 다시 해당 칼럼을 업데이트 해주는데 만약에 UpdateDateColumn에 transformer 프로퍼티 옵션을 사용하게 된다면 해당 기능이 제대로 동작 하지 않는다. @CreateDateColumn 데코레이터와 @UpdateDateColumn 데코레이터를 사용 했을때해당 코드는 cre..
-
NestJS에서 TypeOrm에서 쿼리로그Nest.js/TypeOrm 2024. 4. 22. 12:53
슬로우 쿼리가 발생했을때 해당 쿼리를 찾거나, 의도한 쿼리와 실제 쿼리가 다른지 확인할때 실제 쿼리 로그를 확인한다. 하지만 typeorm에서 제공해주는 로그 옵션으로 dev 개발 환경에서 보게되면 $ query: SELECT "MemberEntity"."id" AS "MemberEntity_id", "MemberEntity"."username" AS "MemberEntity_username", "MemberEntity"."profileImage" AS "MemberEntity_profileImage", "MemberEntity__MemberEntity_memberGroups"."id" AS "MemberEntity__MemberEntity_memberGroups_id", "MemberEntity__Me..
-
TypeOrm을 사용할때 식별관계 테이블에서 find 메서드에 skip과 take 사용시 주의 해야할점Nest.js/TypeOrm 2024. 4. 10. 22:23
// repository await this.repository.find({ select: { id: true, notificationTitle: true, notificationFeedId: true, createdAt: true, }, where: { recipientId, }, relations: { sender: true, }, skip, take, }); 해당 쿼리가 대충 아래처럼 실행 될것이라고 예상 했지만 그렇지 않았다. FK를 가르키는 senderId를 찾을 수 없다는 에러가 나왔다. select fn."senderId", fn."id", fn."notificationTitle", fn."createdAt", fn."senderId", fn."notificationFeedId" from f..