학습을 진행하던 중에 에러가 떴다.
보아하니 order에 있는 값이 숫자가 아니라는 것 같다.
해당 코드에서 order 값에 들어가는 todoMaxOrder 값이 객체 형태로 들어가게 되기에 제대로 값을 처리하지 못하는 것 같다.
그렇기에 order 값만 처리하여 오류를 해결하였다.
여기서 UPDATE(순서 변경,내용 변경)을 위한 UPDATE 함수에 사용하는 메소드는 PATCH 방식인데 PATCH 방식은 DB에서 일부분을 업데이트 할 때 사용한다.
:todoId로 전달받은 _id값을 저장한다.
순서를 결정하는 값을 req.body에서 받아온다.
Todo DB에서 todoId 값을 이용하여 해당하는 id 객체를 조회하고 id가 없다면 오류 메시지를 response로 보내주고 아니라면 id를 변경후 데이터 베이스에 저장하고 성공했음을 response로 보내준다.
기본적인 patch 방식에서 할일(doneAt)을 수정하는 기능이다.
만약 request에서 들어온 done이 true라면 해당 하는 id의 값의 doneAt에 현재 시간을 새겨넣고 false라면 null을 넣는다.(undefined => 값을 넣지 않았다면 넘어간다.)
patch 방식에서 value 값이 들어온다면 내용 자체를 바꾼다.
Delete는 :todoId로 전달받은 id값이 있는지 없는지를 확인하여 있으면 제거하는 기능이다.
1.update와 마찬가지로 id를 가져온다.
2.해당 id로 값을 찾고 값이 있는지 없는지 확인하여 없을 경우 오류메시지를 보낸다.
3.있을 경우에 id 값 하나를 지운다.
웹 서버에서 요청을 받을 때 모든 요청에 대해서 공통적인 처리를 하고 싶을 때가 있는데 이떄 필요한 것이 미들웨어다.
미들웨어는 모든 요청에 대해서 로그를 남기거나(로깅) , 특정 사용자만 API를 접근하게 하고 싶을 때등에 미들웨어를 사용한다.
미들웨어는 기본적으로 순차적인 특성이 있다.
하지만 미들웨어를 거치는 도중에 next()가 실행되지 않는다면 다음 미들웨어는 실행되지 않고 클라이언트의 요청은 종료되는 특성이 있다.