write API를 수정한 뒤에 update API의 경우도 마찬가지로 Joi를 사용하여 ctx.request.body를 검증해 주세요. write API에서 한 것과 비슷하지만, 여기서는 .required()가 없습니다.

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

    /*
      PATCH /api/posts/:id
      {
        title: '수정',
        body: '수정 내용',
        tags: ['수정', '태그']
      }
    */
    export const update = async ctx => {
      const { id } = ctx.params;
      // write에서 사용한 schema 비슷한데, required() 없습니다.
      const schema = Joi.object().keys({
        title: Joi.string(),
        body: Joi.string(),
        tags: Joi.array().items(Joi.string()),
      });
    
      // 검증하고 나서 검증 실패인 경우 에러 처리
      const result = Joi.validate(ctx.request.body, schema);
      if (result.error) {
        ctx.status = 400; // Bad Request
        ctx.body = result.error;
        return;
      }
    
      try {
        const post = await Post.findByIdAndUpdate(id, ctx.request.body, {
          new: true, // 이 값을 설정하면 업데이트된 데이터를 반환합니다.
          // false일 때는 업데이트되기 전의 데이터를 반환합니다.
        }).exec();
        if (!post) {
          ctx.status = 404;
          return;
        }
        ctx.body = post;
      } catch (e) {
        ctx.throw(500, e);
      }
    };

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