inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Many To Many 궁금점

해결된 질문

96

Full Stack 개발자

작성한 질문수 39

0

  1. 아래 처럼 Post 또는 Tag 테이블에 값이 들어가면서 post_model_tags_tag_model 테이블에 값이 반영이 되는데요

  2. 실무에서는 실질적으로 Post 또는 Tag 테이블이 기존에 가지고 있던 값을 활용해서 post_model_tags_tag_model 테이블이 업데이트 되는 경우가 많은데요

  3. 즉, Post_1 이라는 Post 테이블의 값에 Tag_1만 적용되어 있었는데 추후에 Tag_2를 하려면 어떻게 해야하나요? 무조건 Post 테이블에 값을 삽입하면서 post_model_tags_tag_model 테이블에 값을 넣어줘야 하나요?

     

@Post('posts/tags')
  async createPostTags() {
    //post_model 테이블에 삽입
    const post1 = await this.postRepository.save({
      title: 'NestJs Lecture',
    });

    // post_model 테이블에 삽입
    const post2 = await this.postRepository.save({
      title: 'Programming Lecture',
    });

    // post_model_tags_tag_model 테이블에 삽입
    const tag1 = await this.tagRepository.save({
      name: 'javascript',
      posts: [post1, post2],
    });

    // post_model_tags_tag_model 테이블에 삽입
    const tag2 = await this.tagRepository.save({
      name: 'typescript',
      posts: [post1],
    });

    // post_model_tags_tag_model 테이블에 삽입
    const post3 = await this.postRepository.save({
      title: 'NestJs Lecture',
      tags: [tag1, tag2],
    });

    return true;
  }

typescript rest-api nestjs backend

답변 2

0

코드팩토리

안녕하세요!

Many to Many Relation에 관계를 추가하는 방법에 대한 질문으로 해석했는데 맞을까요?

아래와 같이 추가하고 싶은 관계만 넣어줄 수 있습니다.

await dataSource

.createQueryBuilder()

.relation(Post, "categories")

.of(post)

.add(category)

링크 레퍼런스 드립니다.

https://orkhan.gitbook.io/typeorm/docs/relational-query-builder

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Full Stack 개발자님의 질문은 실무에서 Many-to-Many 관계를 효율적으로 업데이트하는 방법에 대한 것입니다. 특히, 이미 존재하는 PostTag 관계를 추가로 업데이트하는 방법에 대한 부분이 궁금하신 것 같습니다.

TypeORM을 활용하여 Many-to-Many 관계를 설정할 때, 두 테이블(예: PostTag) 간의 중간 테이블(post_model_tags_tag_model)을 통해 관계가 관리됩니다. 기존에 존재하는 Post 테이블의 특정 데이터에 새로운 태그를 추가하고 싶은 경우, 아래와 같은 방법으로 처리할 수 있습니다:

  1. 먼저 추가하려는 태그 객체를 로드하거나 생성합니다.
  2. 업데이트할 포스트 객체를 로드합니다.
  3. 포스트 객체의 tags 필드에 새로운 태그를 추가합니다.
  4. 변경된 포스트 객체를 저장(save)하여 중간 테이블도 함께 업데이트되도록 합니다.

아래는 코드 예시입니다:

async addTagToPost(postId: number, newTag: Tag) {
  // postId를 통해 기존 포스트 로드
  const post = await this.postRepository.findOne({
    where: { id: postId },
    relations: ['tags'], // 기존에 연결된 태그들도 함께 로드
  });

  if (post) {
    // 태그 추가
    post.tags.push(newTag);

    // 변경된 포스트 저장
    await this.postRepository.save(post);

    return true;
  }
  return false;
}

이와 같이, 이미 존재하는 Post 객체에 Tag를 추가하면 TypeORM이 자동으로 중간 테이블을 업데이트하여 PostTag 간의 관계가 갱신됩니다.

유사한 상황을 다룬 질문들을 통해 더 많은 예시와 답변을 확인할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cascade 질문

0

39

1

@types/bcrypt 설치과정이 누락된것같습니다.

0

46

1

process.env port key 에러

0

46

1

추상화

0

49

1

[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상

0

94

2

where 키워드가 들어가는 메서드와 아닌 메서드

0

56

1

BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?

0

69

1

app.controller app.service 는 지워도되나요?

0

69

1

@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이

0

78

1

포트 3000에서 listen하는 곳까지 넘어가지 않습니다.

0

66

1

PickType 사용 시 `as const`를 꼭 사용해야 하나요?

0

102

2

socket connect 오류

0

96

2

강의를 들으면서 궁금한 점

0

97

2

DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?

0

60

2

커리큘럼 질문

0

98

2

put 요청은 언제

0

90

3

typeorm VS prisma

0

347

2

142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.

0

76

2

User 데코레이터 버그 수정 전달드립니다.

0

67

1

git 주소 부탁드립니다.

0

112

2

nest g resource 명령어 에러

0

99

2

로그인 엔드포인트 관련 질문

0

84

2

yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우

0

146

3

"흔히 사용되는 메서드" 강의 관련 질문입니다~

0

95

2