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); } };