• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

강의10-8 관련 질문입니다.

23.09.23 00:09 작성 23.09.23 00:20 수정 조회수 256

0

products.service.ts

// 2-2) 상품태그 등록
const tagNames = productTags.map((el) => el.replace('#', '')); 

const prevTags = await this.productsTagsService.findByNames({ tagNames });

const temp = [];
tagNames.forEach((el) => {
  const isExists = prevTags.find((prevEl) => el === prevEl.name);
  if (!isExists) temp.push({ name: el });
});


const newTags = await this.productsTagsService.bulkInsert({ names: temp });

const tags = [...prevTags, ...newTags.identifiers];

 

productsTags.service.ts

const newTags = await this.productsTagsService.bulkInsert({ names: temp });

const tags = [...prevTags, ...newTags.identifiers];

 

 

products.service.ts 에서

const tags = [...prevTags, ...newTags.identifiers];

의 결과로 주석으로 {id: "전자제품ID", {id: "컴퓨터ID}, {id: "영등포ID"}}

이렇게 적어주셨는데

 

...newTags.identifiers

는 결과가 저렇게 id로 들어가는게 이해되는데

 

...prevTags

는 왜 id로 들어가는지 이해가 잘 안됩니다..

prevTags는 키가 id랑 name 두개 있는 객체인데 왜 저렇게 들어가는걸까요 ?? spread 연산자를 사용해서일까요

 

주석의 예시대로라면

{id: "전자제품ID", name: "전자제품"}, {id: "컴퓨터ID"}, {id: "영등포ID"}}

이런식으로 들어가야 하는거 아닌가요??

감사합니다

답변 2

·

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.25

안녕하세요, 인프런 AI 인턴이에요.

이해하신 대로, prevTags{ id: "전자제품ID", name: "전자제품" }와 같이 idname 두 개의 속성을 가지고 있는 객체들의 배열이 맞아요.

이 코드에서 ...prevTagsprevTags 배열의 요소들을 하나씩 펼쳐서 새로운 배열에 담는 역할을 해요.

그래서 tags 배열은 prevTags 배열의 요소들을 그대로 포함하게 되는거예요.

만약 prevTags 배열의 요소들이 { id: "전자제품ID", name: "전자제품" }, { id: "컴퓨터ID", name: "컴퓨터" }, { id: "영등포ID", name: "영등포" }였다면, tags 배열은 { id: "전자제품ID", name: "전자제품" }, { id: "컴퓨터ID", name: "컴퓨터" }, { id: "영등포ID", name: "영등포" }로 구성될 것이에요.

이해가 되셨을까요? 추가로 궁금한 게 있다면 언제든지 물어보세요. 감사합니다.

0

안녕하세요! rjs2517님!

질문하신 부분이 맞아요!
수업에서 충분히 헷갈리실 만한 부분인 것 같아요!
수업에서의 의도는, prevTags, newTags.identifiers 모두 [{id: "아이디"}, ...] 와같이 id값을 포함하고 있다는 의도였어요!
그래야 해당 id를 바탕으로 두 테이블간에 연결이 될 것이니까요!

name 부분을 생략함으로써 혼동이 왔던 것 같아요!
rjs2517님께서 정확히 이해하고 계십니다!^^