더북(TheBook)

19.7.2 데이터 수정

 

마지막으로 update 함수를 구현해 보겠습니다. 데이터를 업데이트할 때는 findByIdAndUpdate 함수를 사용합니다. 이 함수의 첫 번째 파라미터는 id고, 두 번째 파라미터는 업데이트 내용이며, 세 번째 파라미터는 업데이트의 설정 객체입니다.

src/api/posts/posts.ctrl.js - update

/* PATCH /api/posts/:id
   { title, body, tags }
*/
exports.update = async (ctx) => {
  const { id } = ctx.params;
  try {
    const post = await Post.findByIdAndUpdate(id, ctx.request.body, {
      new: true
      //  값을 설정해야 업데이트된 객체를 반환합니다.
      // 설정하지 않으면 업데이트되기 전의 객체를 반환합니다.
    }).exec();
    // 포스트가 존재하지 않을 
    if(!post) {
      ctx.status = 404;
      return;
    }
    ctx.body = post;
  } catch(e) {
    ctx.throw(e, 500);
  }
};

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.