• 티스토리 홈
  • 프로필사진
    KIMJAVAN
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
KIMJAVAN
  • 프로필사진
    KIMJAVAN
    • 개발 (160)
      • 마크업 언어 (19)
        • HTML (7)
        • CSS (12)
      • 자바스크립트 (85)
        • JavaScript (34)
        • JS Library (6)
        • React (13)
        • threeJS (6)
        • TypeScript (2)
        • Next js (5)
        • Node JS (18)
        • webGL (1)
      • AI (4)
        • chat-gpt (4)
      • flutter (17)
        • dart (11)
        • flutter (6)
      • Sql (3)
      • PHP (4)
      • Python (2)
      • Git (4)
      • vscode (1)
      • 개발 도움 사이트 (7)
      • 작업기록 (1)
      • 오류 모음 (3)
      • 메모장 (7)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Node JS] Router - Controller - Model 연결구조 (post)
        2024년 01월 16일
        • KIMJAVAN
        • 작성자
        • 2024.01.16.:29
        728x90
        const router = require('express').Router() // express 쓸건데 express 안에 router()라는거를 나는 router라고 정의하겠다 (상수에 담음)
        const controller = loadModule('gy', 'controller'); // 이거 쓰면 파일로 만든거 경로처리해줌. 이거 하려면 파일 이름 규칙대로 지어줘야함
        
        router.post('/postcontent', controller.submitPost); // router를 만들건데 /postcontent로 만들거고 이거는 post기능을 할겁니다. 그리고 controller 에 submitPost를 쓸거임
        
        module.exports = router //객체를 내보낼거다

        router.js

         

        const gyModel = loadModule('gy', 'model'); //이거 routes에서 비슷하게 쓴건데 같은 gy에 있는 model 불러올거다
        const gyController = {};
        
        //게시글 쓰기
        gyController.submitPost = async (req, res) => { //gyController에 submitPost라는걸 만들건데 이걸 비동기로 처리할거임(값 없으면 오류발생)
            try {
                const {writer, title, content} = req.body;//비구조화할당. 필요한 값을 const writer = req.body.writer 로 쓸 수 있는걸 축약함
        
                if (!writer || !title || !content) { //만약에 필요사항 중 하나가 없으면 = 그러니까 셋 다 필요값이라는거임
                    return res.status(400).json({ error: "글 작성에 필요한 값을 보내주세요." }); //오류코드 내보내고 오류메세지 출력
                }
        
                const post = await gyModel.submitPost(writer, title, content);//gyModel에 writer랑 title이랑 content값을 보낼건데 (위에서 선언한거) 이거 일단 기다려(없으면 오류나니까)
        
                if (!post) { //만약에  post가 없으면
                    return res.status(503).json({ error: "post 등록 실패" }); //503에러를 만들거고 에러메세지 출력할거임
                }
        
                return res.status(200).json(post); //근데 위에거 다 ok되면 200 status내보내고 post를 json형식으로 내보냄 = post는 gyModel에서 담아온거임
            } catch (error) {
                console.error("Error adding post:", error); //위에거 실패하면 에러메세지 출력할거다 *콘솔
                return res.status(500).json({ error: "post 추가 실패" }); // 실패하면 500에러 반환하고 json형식으로 에러메세지 출력할거다
            }
        };
        
        module.exports = gyController;

        controller.js

         

        const gyModel = {};
        const db = database();
        const currentDateTime = new Date();
        currentDateTime.setHours(currentDateTime.getHours());
        
        // 쓰기
        gyModel.submitPost = async (writer, title, content) => { // controller에서 받아온거 writer, title, content로 쓸거다
            let postId = null; // postId필요한데 이거 null로 할거다
        
            await db('gy_nodetest').insert({ //db에서 gy_nodetest에다가 데이터를 넣을건데
                writer: writer,
                title: title,
                content: content,
                status: 'Y',
                reg_datetime: currentDateTime,
                exp_datetime: currentDateTime //항목값 - 값 짝지어서 넣어줄거임
            })
            .then((newId) => { //그래서 ok하면 newId를 만들거고 
                postId = newId; // newId를 postId에 넣을거임
            })
            .catch((e) => { //에러 발생하면
                console.log(e); //콘솔에 에러찍고
                postId = null; //postId에 null반환할거임
            });
        
            return postId; //그래서 then이면 newId값, catch면 null값 된거를 다시 return함
        };
        
        module.exports = gyModel;

        router.js

        저작자표시 비영리 변경금지 (새창열림)

        '자바스크립트 > Node JS' 카테고리의 다른 글

        [Node JS] put - controller  (0) 2024.01.19
        [Node JS] try catch / then catch  (0) 2024.01.16
        [Node JS] 라우터 - 컨트롤러 - 백엔드 연결  (1) 2024.01.10
        [Node Js] 백엔드 config  (0) 2024.01.09
        [node js] 데이터를 body에 담기 POST / 데이터를 url에 담기 GET  (0) 2023.12.29
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바