
Mongoose를 이용해 스키마를 생성해보자
Nosql은 테이블이 없다보니 데이터 무결성이 깨지기 쉽다.
아무 데이터나 도큐먼트에 넣을 수 있기 때문에 장점과 단점을 동시에 가진다.
그래서 데이터 형식을 만들어주기 위해
Mongoose의 스키마(Schema)를 사용한다.
models 폴더를 만들어주고 post.js 를 생성하자
📁models/📃post.js
const mongoose = require('mongoose');
const postSchema = new mongoose.Schema(
{
title: {
type: String,
required: true,
trim: true,
},
description: {
type: String,
required: true,
},
},
{
timestamps: true,
}
);
const Post = mongoose.model('Post', postSchema);
module.exports = Post;
몽구스 스키마가 지원하는 다양한 기능들이 있지만
당장은 게시글의 제목, 내용 정도만 다룰 것이라서 이렇게만 작성하도록 하자
코드 보기
Post 모델 생성 - Github
1편 서버 세팅 글에서 router.js에 모든 로직을 때려 넣겠다는 얘기를 했었는데,
작업을 하다보니 가독성이 너무 떨어지고 관리가 힘들었다.
그래서 route에 대한 콜백 함수는 따로 모듈화해서 관리하기로 결정했다.
코드를 작성하기 전에
게시판에 필요한 메소드와 경로, 콜백 함수명을 먼저 정리해보자
1. 게시판에 보여줄 전체 글 조회
- GET /
- getAllPost
2. 글쓰기 버튼을 눌렀을 때 나올 게시글 작성 페이지
- GET /post
- getWrite
3. 작성이 끝나고 클라인언트가 submit 했을 때 데이터 전달
- POST /post
- postWrite
4. 게시판에서 특정 게시글을 눌렀을 때 해당 게시글 정보 보여주기
- GET /post/:postId
- getOnePost
5. 해당 게시글 삭제
- DELETE /post/:postId
- deleteOnePost
6. 게시글을 수정할 수 있는 페이지
- GET /post/edit/:postId
- getEditPost
7. 게시글 수정 완료 후 submit 했을 때 수정된 데이터 전송
- POST /post/edit/:postId
- postEditPost
8. 게시글 전체 삭제 - 개발용(없어도 됨)
- DELETE /post/all
- deleteAllPost
정리가 끝났다면,
routers 폴더 내에 postRouter.js 파일을 만들어 주고 함수를 작성해보자.
📁routers/📃postRouter.js
const express = require('express');
const postRouter = express.Router();
// 모든 게시글 조회
postRouter.get('/', getAllPost);
// 게시글 작성 GET / POST
postRouter.get('/post', getWrite);
postRouter.post('/post', postWrite);
// 게시글 전체 DELETE - 임시
postRouter.delete('/post/all', deleteAllPost);
// 특정 게시글 GET / DELETE
postRouter.get('/post/:postId', getOnePost);
postRouter.delete('/post/:postId', deleteOnePost);
// 게시글 수정 GET / POST
postRouter.get('/post/edit/:postId', getEditPost);
postRouter.post('/post/edit/:postId', postEditPost);
module.exports = postRouter;
마지막으로 app.js 파일에서 postRouter.js 파일을 불러오고
postRouter 실행 경로를 /board 로 설정해준다.
/📃app.js
…
const postRouter = require('./routers/postRouter');
…
app.use('/board', postRouter)
다음 포스트에서는 라우터에서 사용할 콜백 함수의 동작을 구현해보자
전체 코드 보기
📃 Post 모델 생성 - Github
📃 Post 라우터 만들기 - Github