생각보다 빨리 구현해서 다음 통계를 구현할 시간이 넉넉해졌다. 다음 업무인 설문통계가 생각보다 오래 걸릴 수도 있을 것 같은데 야근은 안해도 될 것 같다.
With
가 사용되었는데 실제 사용하는 것은 처음봐 검색해보았다.--
로 주석 작성한 부분은 없애야 잘 된다.사실 엄청 급한건 아니지만 테스트도 하고 시연할 것 생각하면 겉으로 보여지는 부분을 빨리 구현해야한다고 생각함.
게시물 작성 시, Home 수정화면에서 사진을 선택했다가 삭제하는 기능이 있는데, 삭제를 하고 나면 새로 파일을 추가하거나 그대로 저장하는 것이 안되는 문제가 있었다. 특이점은 게시물 작성 시 사진 리셋하고 저장하면 에러가 뜨는데, home 수정화면에서 사진을 리셋하고 저장하면 에러 없이 기존 사진이 그대로 조회됐다. 결론적으로 에러의 원인에는 2가지가 있었다.
원래 isDeleteAttach
라는 boolean 변수를 하나 줘서 기존파일 삭제 여부를 판단하려고 했는데, 다시 생각해보니 필요없었던 것 같다. 그냥 새 파일 유무 안에 기존파일 유무로 삭제여부를 중첩하는 방식으로 구현했더니 더 깔끔하고 이해하기 쉬워졌다. 게시물 파일의 수정, 삭제는 이 부분을 수정하니 해결이 되었는데, 이상하게 home 부분은 여전히 기존 파일이 계속 조회되는 문제가 있었다.
원인은 home 수정화면의 javascript 코드에 있었다. 화면에서 파일 삭제 버튼을 클릭하면 파일을 삭제하고 화면에서 이미지를 보이지 않게 하는 javascript function이 호출되는데, 해당 함수 안에 input type=file의 value를 비워주는 코드가 누락되어 있는 것을 발견했다. 해당 값이 그대로 들어있으니 계속 기존 파일을 controller로 넘기게 되고, controller에서는 새로운 파일로 인식해 매번 기존 파일 지우고 같은 파일을 다시 등록하고 있었던 것으로 보인다.
누락된 코드를 넣어주니 의도대로 사진 리셋 기능이 작동했다.
function deleteAttach() {
// img 삭제할 부모 태그
const parent = document.querySelector("ul#image-container");
// 기존파일 id 정보 담긴 태그
const input_attachId = document.querySelector("input#ATTF_ID");
if(input_attachId) { // id값 이미 있으면 deleteAttach 속성 true로 변경
const deleteAttach = document.querySelector('#deleteAttach');
deleteAttach.value = true;
}
// 파일 객체 있으면 삭제 - home 수정 화면에 누락된 코드블록
const input_attachObj = document.querySelector("input#ATTF_OBJ");
if(input_attachObj) {
input_attachObj.value = "";
}
parent.innerHTML = "";
}