스파르타 코딩

일정 관리 앱 제작 트러블 슈팅

스타르타 2024. 10. 17. 07:35
반응형

1. DTO 적용 문제

초기에는 엔티티를 직접 반환하도록 설정하였으나, 엔티티를 그대로 반환하는 것은 데이터 노출과 관련된 보안 문제 및 확장성의 문제가 될 수 있어, DTO(Data Transfer Object)를 사용해 데이터를 반환하도록 변경하였습니다. 이 과정에서 서비스 계층에서 엔티티를 DTO로 변환하는 로직을 추가하였습니다.

 

컨트롤러와 서비스 계층에서 DTO로 변환된 데이터를 사용하도록 수정했으며, 각 메서드마다 적절한 DTO로의 변환을 구현하였습니다. 유저 생성, 모든 유저 조회, 특정 유저 조회, 일정 생성, 일정 조회 등의 기능에서 DTO를 사용해 반환하도록 수정하였습니다.

 

2. 필수 값 누락 및 엔티티 필드 문제

일정 생성 시 userName 필드가 누락되거나 null로 저장되면서 데이터베이스에서 오류가 발생하였습니다. 데이터베이스의 userName 필드는 nullable = false로 설정되어 있었기 때문에 반드시 값을 설정해야 했습니다.

 

userName 필드를 삭제하려 했으나, 일정 생성 시 필요한 값이었기 때문에 이를 유지하기로 결정했습니다. 따라서, 일정 생성 시 반드시 유저 이름을 포함하여 저장하도록 코드를 수정하였습니다.

 

3. 프론트엔드와 백엔드 연동 문제

프론트엔드에서 일정 생성 시 500 Internal Server Error가 발생하였습니다. 이는 서버 측에서 필수 필드가 누락되었거나 잘못된 값이 전달된 경우 발생할 수 있는 오류였습니다.

 

이를 해결하기 위해 프론트엔드에서 fetch 요청을 보낼 때, 모든 필수 값을 정확히 전달하도록 수정하였습니다. 또한, 서버에서 응답이 올바르게 반환되지 않을 경우, 오류 메시지를 출력하여 문제를 파악할 수 있도록 추가적인 예외 처리를 구현하였습니다.

 

4. 데이터베이스 스키마 수정 문제

schedule 테이블에서 user_name 필드를 삭제하려 했으나, 해당 필드가 존재하지 않거나 다른 제약 조건으로 인해 삭제가 불가능했습니다. 이후, user_name 필드를 유지하고 올바르게 값을 설정하는 방식으로 문제를 해결했습니다.

 

새로운 필드인 date 필드를 추가하려 했으나, 이미 존재하는 필드 이름과 중복되어 오류가 발생했습니다. 이를 해결하기 위해 엔티티 클래스에서 date 필드를 기본값과 함께 정의하였습니다.

 

5. SQL 오류 및 데이터 무결성 문제

일정 생성 시 Field 'date' doesn't have a default value라는 오류가 발생했습니다. 이 문제는 date 필드에 기본값이 없어서 발생한 것이며, 엔티티 클래스에서 해당 필드에 기본값을 설정하여 해결하였습니다.

 

데이터베이스 삽입 시 필수 필드가 누락되지 않도록, 엔티티 클래스에서 모든 필수 필드에 대한 유효성 검사를 추가하였습니다.

 

6. 네트워크 요청 오류 처리

프론트엔드에서 서버로 네트워크 요청을 보낼 때, 응답 상태 코드가 200 OK가 아닌 경우에 대한 처리가 부족했습니다. 이를 해결하기 위해 fetch 요청에서 response.ok를 체크하여 오류 발생 시 적절한 예외 처리를 추가하였습니다.

일정 생성 시 서버에서 오류가 발생하면 오류 메시지를 출력하고, 사용자에게 알림을 표시하도록 수정했습니다.

반응형