React Blog (1)

개발일지

리액트를 다루는 기술이라는 책에서 진행한 블로그 프로젝트를 따라해보며 쓰는 개발일지

Backend

Folder Structure

backend
    - node_modules
    - src
        - api
            - auth
                - auth.ctrl.js
                - index.js
            - posts
                - posts.ctrl.js
                - index.js
            index.js
        - config
            - index.js
        - lib
            - checkLoggedIn.js
            - validateJwt.js
        - models
            - user.js
            - post.js
        express.js
        index.js
        main.js
        server.js
    .env
    .eslintrc.json
    .prettierrc
    .gitignore
    .package.json

서버는 다음과 같은 기능을 수행하는 API를 구성해야 한다.

Authentication

CRUD

Authorization이 필요한 포인트

이 중에서도 Edit과 Delete는 추가적인 확인이 필요한 포인트

API

기능에 따라 두 가지로 나뉜다.

/api/auth

/api/post

Model

데이터베이스는 Mongodb를 사용한다.

블로그 프로젝트에서 사용하는 데이터 모델을 크게 두 가지로 이루어져 있다.

mongoose 패키지를 이용하여 모델을 구성한다.

모델 구성은 다음과 같은 뼈대를 가진다.

import {Schema}, mongoose from 'mongoose'

const UserSchema = new Schema({
    field: type
})

UserSchema.methods = {
    // methods
}

UserSchema.statics = {
    // static methods
}

const User = mongoose.model('User', UserSchema)
export default User

Controller

Controller는 Model을 통해 데이터베이스에 접근하여 API 기능을 수행한다.

controller 구성은 다음과 같은 뼈대를 가진다.

export const list = async (req, res) => {
    try {
        // query를 수행한다.
        const posts = await Post.find()
        // 결과를 응답한다.
        return res.status(202).json(posts)
    } catch (err) {
        return res.status(500).json({
            error: err.message
        })
    }
}

mongodb에 쿼리하는 함수는 async 함수로 구현한다.