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;
}
위 로직을 실행하면 이런식으로 저장이 된다.
해당 내용들을 보면 kind = 좌석의 종류, price = 가격, x = 로우, y =
컬럼 이런식으로 bool값이 True인 경우에만 저장이 되었다.
앞으로 남은 부분
false인 값들은 DB에 저장을 하지 않았다 ( 존재하지 않는 좌석들을 저장하는 경우 DB의 용량을 너무 많이 차지함 )
그래서 false인 값들은 없기 때문에 DB에서 x,y 값들을 다시 가져와서 2차원 배열로 뿌려주는
로직을 구현해야 프론트엔드에서 사용이 가능한 수준이 될 것 같다.