관련포스팅 ↓
현재 위치→MongoDB 데이터 가져오기 (Read)
MongoDB 데이터 삭제하기 / DeleteMapping 사용해보기 (Delete)
저번에 DB 와 연결해서 넣었던 데이터를 가져오기위해 공부를 해보았다.
Controller
@GetMapping("/readData")
public List<Mongo> findAll(){
return this.mongService.getList();
}
데이터만 포스트맨 을 이용해 확인할것 이기 때문에 @RestController 에서 작업하였다.
Service
public List<Mongo> getList() {
try {
return mongoRepo.findAll();
} catch (Exception e) {
e.printStackTrace(); // 또는 로깅을 사용하여 예외 내용을 출력
throw new RuntimeException("데이터를 가져오는 중에 오류가 발생했습니다.");
}
}
처음에 500에러로 데이터를 DB에 가져오기가 불가능하여 기존 작성했던 코드들에 TryCatch 를 추가하였다 (에러관련 해결내용은 아래.. )
PostMan
포스트맨에서 해당 맵핑된 url 을 찍었을 때 데이터가 리스트값으로 잘 나왔다.
에러가 났던 부분 / 해결
이전에 작업했던 데이터를 넣는 부분은 정상적으로 동작을 하였었다.
하지만 가져오기쪽에서 계속 500에러가 나와 확인해본 결과 도큐먼트 클래스에 생성자관련 어노테이션이 없어 발생한 오류였다.
@Data
@Getter
@Setter
@Document("1234")
public class Mongo {
@Id
private String id;
private String text1;
private String text2;
public Mongo(String text1, String text2) {
this.text1 = text1;
this.text2 = text2;
}
public Mongo(String id, String text1, String text2){
this.text1=text1;
this.text2=text2;
this.id=id;
}
}
@Data
@Getter
@Setter
@Document("1234")
@AllArgsConstructor
@NoArgsConstructor
public class Mongo {
@Id
private String id;
private String text1;
private String text2;
}
기존코드엔 생성자를 직접 작성하여 만들었는데, 이부분이 가져올때 오류가 된 것인지 아니면 가져오기 관련한 생성자가 없어서 오류가 난듯하다.
@AllArgsConstructor,@NoArgsConstructor 어노테이션을 추가하였다.
@NoArgsConstructor: 파라미터가 없는 기본생성자 생성
@AllArgsConstructor: 모든 필드를 파라미터로 받는 생성자 생성
두 어노테이션으로 필요한 생성자들을 자동추가하도록 수정하고 Read 를 테스트하니 데이터를 잘 가져올 수 있었다.