- [Node JS] 기본 CRUD2024년 03월 21일
- KIMJAVAN
- 작성자
- 2024.03.21.:55
728x90const router = require('express').Router() const controller = loadModule('basic', 'controller'); router.post('/post', controller.submitPost); //게시글 쓰기 router.get('/postlist', controller.getPosts); // 게시글 목록을 불러오기 router.get('/post/:idx', controller.getPostById); //게시글 상세 불러오기 router.put('/post', controller.updatePost) //게시글 수정하기 router.put('/postdelete', controller.deletePost) //게시글 삭제하기 module.exports = router
routes.js
const basicModel = loadModule('basic', 'model') const basicController = {}; const path = require('path'); // 게시글 쓰기 basicController.submitPost = async (req, res) => { try { const {writer, title, content} = req.body; if (!writer || !title || !content) { return res.status(400).json({ error: "글 작성에 필요한 값을 보내주세요." }); } const post = await basicModel.submitPost(writer, title, content); if (!post) { return res.status(503).json({ error: "post 등록 실패" }); } return res.status(200).json(post); } catch (error) { console.error("Error adding post:", error); return res.status(500).json({ error: "post 추가 실패" }); } }; //게시글 목록을 불러오기 basicController.getPosts = async (req, res) => { try { const posts = await basicModel.getPosts(); console.log('posts') console.log(posts) if (posts === null) { return res.status(503).json({ message: "게시글 불러오기 도중 오류 발생" }); } return res.status(200).json(posts); } catch (error) { console.error("Error fetching posts:", error); return res.status(500).json({ error: "Failed to fetch posts" }); } }; //게시글 상세 불러오기 basicController.getPostById = async (req, res) => { try { const postIdx = req.params.idx; if (!postIdx) { return res.status(400).send("조회할 게시글의 idx값이 없습니다."); } const post = await basicModel.getPostById(postIdx); if (!post) { return res.status(503).send("Post not found"); } return res.status(200).json(post); } catch (error) { console.error("Error fetching post:", error); return res.status(500).json({ error: "Failed to fetch post" }); } }; //게시글 수정하기 basicController.updatePost = async(req, res) => { try { const postData = req.body; //idx가 실존하는지 || 게시글의 status 상태가 Y인지 검증 ------------------- const postExist = await basicModel.getPostById(postData.idx); if(!postExist) { return res.status(503).json({ error: "수정할 게시글을 찾을 수 없습니다." }) } // 카테고리 수정 ------------------------------------------------------- const updatedPost = await basicModel.updatePost(postData); if (!updatedPost) { return res.status(503).json({ error: "게시글 수정하기 실패" }); } console.log(`${updatedPost.idx}의 정보 수정 성공`) return res.status(200).json(updatedPost); } catch (error) { console.error("Error updating post:", error); return res.status(500).json({ error: "Failed to update post" }); } }; //게시글 삭제하기 basicController.deletePost = async(req, res) => { try { const deleteIdxsList = req.body.idxs; if (deleteIdxsList.length === 0) { return res.status(400).json({error: '삭제할 카테고리 아이템이 없습니다.'}); } // deleteIdsList 배열에 있는 각 faq_id를 사용하여 해당 행의 faq_status를 "취소"로 업데이트합니다. for (const idx of deleteIdxsList) { const deletedResult = await basicModel.deletePost(idx); if(!deletedResult){ return res.status(503).json({ error: `${idx}번 째 게시글 삭제 실패` }); } } return res.status(200).json({ message: '게시글이 성공적으로 삭제되었습니다.' }); } catch (error) { console.error("Error deleting post:", error); return res.status(500).json({ error: "Failed to delete post" }); } }; // ... 다른 컨트롤러 함수들 ... module.exports = basicController;
controller.js
const basicModel = {}; const db = database(); const currentDateTime = new Date(); currentDateTime.setHours(currentDateTime.getHours() + 9); // 공지 작성하기(쓰기)v basicModel.submitPost = async (writer, title, content) => { let postId = null; await db('wb_basic').insert({ writer: writer, title: title, content: content, status: 'Y', reg_datetime: currentDateTime, upd_datetime: currentDateTime }) .then((newId) => { postId = newId; }) .catch((e) => { console.log(e); postId = null; }); return postId; }; //게시글 목록을 불러오기 basicModel.getPosts = async (page=0) => { let postlist = null; await db .select('*') .from('wb_basic') .where('status', "Y") .then(rows => { postlist = (rows.length > 0) ? rows : []; }) .catch((e) => { console.log(e); postlist = null; }); return postlist; }; //게시글 상세 불러오기 basicModel.getPostById = async (idx) => { let postById = null; await db .select('*') .from('wb_basic') .where('idx', idx) .andWhere('status','Y') .limit(1) .then(rows => { postById = (rows.length > 0) ? rows[0] : null; }) .catch((e) => { console.log(e); postById = null; }); return postById; }; //게시글 수정하기 basicModel.updatePost = async (postData) => { await db('wb_basic') .where('idx', postData.idx) .andWhere('status', 'Y') .update({ writer: postData.writer, title: postData.title, content: postData.content, upd_datetime: currentDateTime }) .catch((e) => { console.log(e); return null; }); // 업데이트된 내용(id와 title)을 반환합니다. return await basicModel.getPostById(postData.idx); // 또는 필요에 따라 업데이트된 내용 반환 } //게시글 삭제하기 basicModel.deletePost = async (idx) => { await db('wb_basic') .where('idx', idx) .andWhere('status', 'Y') .update({ status: 'N', exp_datetime: currentDateTime }) .catch((e) => { console.log(e); return false; }); return true; // 또는 필요에 따라 업데이트된 내용 반환 } module.exports = basicModel;
model.js
'자바스크립트 > Node JS' 카테고리의 다른 글
[NodeJS] select from 순서 (0) 2024.04.01 [NodeJS] req, res (0) 2024.04.01 [Node JS] 기본 개념 정리 (0) 2024.01.24 [Node JS] put - controller (0) 2024.01.19 [Node JS] try catch / then catch (0) 2024.01.16 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)