더북(TheBook)

14.5.1 게시글 작성하기

새 게시글을 작성할 수 있게 해주는 create 핸들러 함수를 다음과 같이 작성해보세요. 이 파일의 맨 위에 있는 'use strict'는 지우세요.

api/article/controllers/article.js

module.exports = {
  async create(ctx) {
    // 사용자의 id를 데이터에 추가
    ctx.request.body.user = ctx.state.user.id;
    // article 데이터 생성
    const entity = await strapi.services.article.create(ctx.request.body);
    // 잘못된 필드 및 Private 값 제외하고 반환
    return sanitizeEntity(entity, { model: strapi.models.article });
  }
};

ctx.request.body는 사용자가 POST 요청에 넣은 body 값을 의미합니다. ctx.state.user.id는 현재 로그인 중인 사용자의 ID를 의미합니다.

이 코드에서는 요청이 들어오면 사용자에게 전달받은 body 데이터에 user 값을 현재 로그인 중인 사용자의 ID로 설정합니다.

그리고 해당 body 데이터를 사용하여 데이터베이스에 정보를 저장하는데, 이때 strapi.services.article.create 함수를 사용합니다. 인자에는 생성할 데이터의 정보를 넣습니다.

마지막으로 sanitizeEntity라는 함수를 불러와서 사용했습니다. 이 함수는 데이터를 Content View에 맞춰 보여줄 데이터만 정리하여 사용자에게 응답을 줍니다.

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