• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

섹션5의 Post 요청 만들기에서 질문있습니다.

24.01.26 13:54 작성 조회수 114

0

안녕하세요.

섹션5의 Post 요청 만들기 영상을 보다가 궁금증이 생겨 질문드립니다.

 

Q1)

새로운 post 생성시 id를 부여할 때

배열의 마지막 인덱스 아이템을 꺼내

해당 아이템의 id에 1을 더하셨습니다.

그런데 배열 안의 아이템 순서가 꼭 id-오름차순으로 정렬되어있을거란 보장이 없기 때문에

배열에서 가장 큰 id를 찾은 후, +1을 하여 새로운 id를 부여해줘야하지 않을까 싶은데 제가 잘못 생각하고 있는걸까요?

 

Q2)

새로운 post를 기존 배열에 push하지 않고,

spread 방식으로 추가해주셨는데

특별한 이유가 있는건지도 궁금합니다!

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.28

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

JB_님의 질문에 답변드리겠습니다.

Q1) NestJS에서의 새로운 post 생성 시 ID 부여에 대한 고민은 매우 중요한 사항입니다. 실제로 데이터가 순차적으로 저장되는 것을 보장할 수 없으며, 또한 삭제된 데이터로 인해 ID간에 간격이 생길 수 있습니다. 그래서 실제 어플리케이션에서는 데이터베이스 자체에서 ID를 자동으로 생성해주는 기능(예: auto_increment)을 사용하거나, 유니크한 ID를 생성해주는 별도의 라이브러리를 사용하기도 합니다. 배열의 마지막 인덱스에서 ID를 가져오는 방식은 튜토리얼이나 간단한 예시에 해당하며, 안정적인 ID 생성을 위해서는 JB_님이 제시하신 방법처럼 배열 중 가장 큰 ID를 찾아서 이를 기반으로 새로운 ID를 생성하는 과정이 더 적합할 수 있습니다.

Q2) 기존 배열에 post를 push하는 방식과 spread 연산자를 사용하는 방식은 결과적으로 동일한 동작을 하지만, 불변성(Immutability)을 유지하기 위한 차이가 있습니다. push 메서드를 사용하면 기존 배열이 변경되지만, spread 연산자를 사용할 경우 새로운 배열이 생성되어 기존의 상태를 변경하지 않습니다. 이러한 불변성은 리액티브 프로그래밍, 함수형 프로그래밍의 원칙을 따르며, 상태 관리가 보다 예측 가능하고 안전하다는 장점이 있기 때문에 많은 현대적인 프레임워크에서 권장하는 방식입니다.

더 궁금한 점이 있으시면 추가 질문을 남겨주시길 바랍니다.