배씨의 개발일지

좌석 만들기 - Mysql DB에 2차원 배열 저장하기 본문

TIL

좌석 만들기 - Mysql DB에 2차원 배열 저장하기

용찬 2023. 8. 24. 17:33

기본적으로 2차원 배열은 Mysql에 저장이 되지 않는다.
그래서 로우 = x, 컬럼 =y 라고 명할때 boolean 값이 true이면
seatEntity안에 x, y 값과 함께 받아온 다른 정보들을 반환하고, seatEntity에 저장을 한다.

    for (let y = 0; y < seats.length; y++) {
      for (let x = 0; x < seats[y].length; x++) {
        if (seats[y][x][2]) {
          //  내부에 있는 좌석인지 확인 [2] 일 때 존재하는 좌석
		  // [2] 일 때 해당하는 좌석의 y,x의 값을 seatEntity에 값을 반환
          const seatEntity = new Seats();
          seatEntity.kind = data.kind;
          seatEntity.price = data.price;
          seatEntity.x = y;
          seatEntity.y = x;
          seatEntities.push(seatEntity);
        }
      }
    }
    const createdSeats = await this.seatRepository.save(seatEntities);
    // 위 seatEntity에서 생성된 값들을 받아서 seatRepository에 저장
    return createdSeats;
  }

위 로직을 실행하면 이런식으로 저장이 된다.

DB에 저장 후 select * from seat 한 결과

해당 내용들을 보면 kind = 좌석의 종류, price = 가격, x = 로우, y =
컬럼 이런식으로  bool값이 True인 경우에만 저장이 되었다.

앞으로 남은 부분

false인 값들은 DB에 저장을 하지 않았다 ( 존재하지 않는 좌석들을 저장하는 경우 DB의 용량을 너무 많이 차지함 )
그래서 false인 값들은 없기 때문에 DB에서 x,y 값들을 다시 가져와서 2차원 배열로 뿌려주는
로직을 구현해야 프론트엔드에서 사용이 가능한 수준이 될 것 같다.


Comments