NodeJS에서 RestAPI로 CRUD 구현하기

김동욱·2024년 11월 22일
  1. 필요 소프트웨어
  • 데이터를 저장할 MongoDB
  • NodeJS에서 MongoDB를 사용할 수 있게 해주는 mongoose
  • MongoDB 상태를 가시적으로 확인할 수 있게 해주는 Studio3T
  1. 초기화
  • yarn 프로젝트 초기화 yarn init -y
  • package.json에 모듈 사용 정의 "type": "module"
  • 모듈 설치 `yarn add express mongoose
  1. 스키마 설계 및 모델 생성
import mongoose from 'mongoose';

	const TodoSchema = new mongoose.Schema({
    	value: { type: String, required: true }
    	order: { type: Number, required: true }
    	doneAt: { type: Date }
    });
export default mongoose.model('Todo', TodoSchema);
  1. 실행 파일에서 라우터 매핑
import TodosRouter from './routes/todos.router.js';
app.use('/api', [router, TodosRouter]);
  1. 라우터에서 API 작성
import express from 'express';
import Todo from '../schemas/todo.schema.js';

const router = express.Router();

// 저장 : POST API - await [모델].save();
router.post('/todos', async (req, res) => { 
	... //req.body에서 입력값 식별하기
	const todo = new Todo( { value, order });
    await todo.save();
    return res.status(201).json({todo});
}

// 조회 : GET API - await [모델].find().exec();
router.get('/todos', async (req, res) => {
    const todos = await Todo.find().sort('-order').exec();
    return res.status(200).json({ todos });
});

// 수정 : patch API - findById, findOne, save
router.patch('/todos/:todoId', async (req, res) => {
	const currentTodo = await Todo.findById(req.params.todoId).exec();
    currentTodo.value = req.body.value;
	await currentTodo.save();
    
    return res.status(200).json({ });
}

// 삭제 : delete API - await [모델].deleteOne();
router.delete('/todos/:todoId', async (req, res) => {
    const { todoId } = req.params;
    await Todo.deleteOne({ _id:todoId });
    return res.status(200).json({});
})

export default router;
profile
갓겜만들어야지

0개의 댓글