더북(TheBook)

14.5.3 게시글 삭제하기

마지막으로 게시글을 삭제하는 delete 핸들러 함수를 구현해봅시다. 이번 함수는 update와 매우 유사합니다. 게시글이 자신의 게시글인지 확인하고, 자신의 것이라면 삭제 처리하고 그렇지 않다면 오류를 응답합니다.

api/article/controllers/article.js

const { sanitizeEntity } = require('strapi-utils');

module.exports = {
  async create(ctx) {
    (...)
  },

  async update(ctx) {
    (...)
  },
  
  async delete(ctx) {
    const { id } = ctx.params; // URL 파라미터에서 id 추출
    const article = await strapi.services.article.findOne({ id }); // id로 데이터 조회

    // 데이터가 존재하지 않을 때
    if (!article) {
      return ctx.throw(404);
    }

    // 사용자 id article의 작성자 id가 일치하는지 확인
    if (ctx.state.user.id !== article.user.id) {
      return ctx.unauthorized(`You can't remove this entry`);
    }

    // 응답 반환
    ctx.status = 204; // no content
  },
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.