반응형
이제 실제로 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 문으로 오류를 처리해야 합니다.
반응형
'데이터베이스' 카테고리의 다른 글
mongoose 데이터 삭제하기 - REPL 사용 (0) | 2023.07.30 |
---|---|
mongoose로 데이터 찾기 (0) | 2023.07.26 |
mongoose로 대량의 데이터 입력하기 (0) | 2023.07.24 |
mongoose로 MongoDB 접속하기 (0) | 2023.07.24 |
mongoose 스키마와 모델 (0) | 2023.07.18 |