본문 바로가기
데이터베이스

MongoDB 데이터 생성 및 조회

by 즐거운코딩 2023. 7. 18.
반응형

이제 실제로 MongoDB 를 사용해서 데이터를 등록하여 관리하도록 하겠습니다.

 

1. 데이터 생성

 

기존에 작성했던 로직을 모두 새로 작성해야 하므로 posts.ctrl.js 에서 기존 코드를 모두 지우고 다음 코드를 작성합니다.

import Post from '../../models/post';

export const write = (ctx) => {};

export const list = (ctx) => {};

export const read = (ctx) => {};

export const remove = (ctx) => {};

export const update = (ctx) => {};

기존에 구현했던 PUT 메서드의 replace는 구현하지 않을 것이어서 제외했습니다.

따라서 관련된 설정이 있는 src/api/posts/index.js 파일에서도 제거 합니다.

 

그리고 블로그 포스트를 작성하는 API인 write 를 구현해 봅니다.

import Post from '../../models/post';

/*
  POST /api/posts
  {
    title: '제목',
    body: '내용',
    tags: ['태그1', '태그2']
  }
*/
export const write = async (ctx) => {
  const { title, body, tags } = ctx.request.body;
  const post = new Post({
    title,
    body,
    tags,
  });
  try {
    await post.save();
    ctx.body = post;
  } catch (e) {
    ctx.throw(500, e);
  }
};

포스트의 인스턴스를 만들 때는 new 키워드를 사용합니다. 그리고 생성자 함수의 파라미터에 정보를 지닌 객체를 넣어줍니다.

 

인스턴스를 만들면 바로 데이터베이스에 저장되는 것은 아닙니다. save() 함수를 실행시켜야 데이터베이스에 저장됩니다.

이 함수의 반환 값은 Promise 이므로 async/await 문법으로 데이터베이스 저장 요청을 완료할 때까지 await를 사용하여 대기할 수 있습니다. await를 사용하려면 함수를 선언하는 부분 앞에 async 키워드를 넣어야 합니다.

또한 await를 사용할 때는 try/catch 문으로 오류를 처리해야 합니다.

반응형