인프런 커뮤니티 질문&답변

ZZAMBA님의 프로필 이미지
ZZAMBA

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

1:1 관계 등록 API

save 파라미터에 스프레드 안쓰고 객체를 넘겨도 되나요?

해결된 질문

작성

·

392

0

 const savedProductSaleslocation = await this.productSaleslocationRepository.save({
  ...productSaleslocation,
});

위 코드에서, 아래처럼 코드를 바꿔봤습니다.

const savedProductSaleslocation = await this.productSaleslocationRepository.save(productSaleslocation);

정상 작동했는데 차이가 무엇인가요? 또 권장하는 방식은 무엇인가요?

답변 1

0

안녕하세요 ZZAMBA님!

현재 로직(productSaleslocation)에서는 save 메서드에 하나의 인자만 전달하고 있기 때문에 아래 작성해주신 로직처럼 작성하여도 큰 문제가 없으나, save메서드에 여러개의 인자가 이용된다면 강의에서 진행하는 방식을 이용하여 작성해 주셔야 합니다.

product를 저장하는 로직과 비교하여 학습해 보시기 바랍니다. 감사합니다 :)

ZZAMBA님의 프로필 이미지
ZZAMBA
질문자

전 주차(typeorm-crud)에 배웠던 ProductService 내 create 메서드도 아래 코드처럼 객체를 직접 넣어주었고, 실행해본 결과, graphQL playground에서도 성공적으로 실행 되었습니다.

async create({ createProductInput }: { createProductInput: CreateProductInput }) {
    const result = await this.productRepository.save(createProductInput);
    return result;
  }

객체를 새로 생성하는 것과 그냥 원래 객체를 넣는 것의 차이만 있는 것인가요?

안녕하세요 ZZAMBA님!

save메서드에서 아래의 경우처럼 하나의 인자를 전달해주는 경우에는 기존의 객체를 넣어주어도 크게 문제가 발생하지 않습니다.

async create({ createProductInput }: { createProductInput: CreateProductInput }) { 
      const result = await this.productRepository.save(createProductInput); 
      return result; 
}

아래처럼 여러개의 인자를 전달해주는 경우를 위해 스프레드 연산자를 사용하는 것입니다.

const result2 = await this.productRepository.save({ 
     ...product, 
     productSaleslocation: result, 
     productCategory: { id: productCategoryId },
 });


해당 내용은 1 : N 관계 등록 API 수업을 통해 자세하게 학습할 수 있으니 참고해 주시기 바랍니다. 감사합니다!

ZZAMBA님의 프로필 이미지
ZZAMBA

작성한 질문수

질문하기