작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
314
·
수정됨
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 인턴이에요.
이해하신 대로, prevTags
는 { id: "전자제품ID", name: "전자제품" }
와 같이 id
와 name
두 개의 속성을 가지고 있는 객체들의 배열이 맞아요.
이 코드에서 ...prevTags
는 prevTags
배열의 요소들을 하나씩 펼쳐서 새로운 배열에 담는 역할을 해요.
그래서 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님께서 정확히 이해하고 계십니다!^^