본문 바로가기
NODE.JS

[ NODEJS ] 2. express 게시판 ( insert 로 데이터 삽입 )

by 정윤재 2021. 9. 20.

* 구현하고자 하는 Flow 는 아래와 같습니다.

 

1.  insert 데이터 입력을 위한 router 설정을 추가 합니다.

    - 구현 사항 : /insert 라는 URL 로 들어 올수 있게 router 에 메소드를 추가 합니다.

    - routes  폴더의 testRouter.js 파일을 아래와 같이 추가 합니다.

 

testRouter.js

 

let mime = require('Mime');
let path = require('path');
let mariadbModule = require(__BASE + 'dataaccess/mariadbConn');
module.exports = function(app, fs)
{
   //app.use 로 받으면 method 에 관계 없이 호출 받음, app.get 은 get 메소드, app.post 는 post 메소드
   app.get('/', async function(req,res){

            res.render('index', {
				title: "index"
            })

        });

  
   app.use('/list', async function(req,res){

        let sql = "select TEST_ID, TEST_NAME from TEST_TBL";
         //동적 바인트 되는 preparedstatement 를 쓰려면 where TEST_ID=? 와 같이 사용하면 됨
        let rows = await mariadbModule.select(sql,[]); 
         //select함수에서는 sql 문자열, [param1,param2,....] 이런식으로 파라미터가 들어감
        __LOGGER.info("select complete");

        res.render('list', {
            list: rows
            //ejs 에서는 list 라는 이름으로 호출 됨
        })

   });

   app.use('/insert', async function(req,res){

        res.render('insert', {

        })

   });
   
 }

   

2. insert 할 데이터를 입력 받기 위한 view 페이지를 작성합니다.

   - views 폴더 에서 insert.ejs 를 추가 합니다.

 

insert.ejs

 

<html>
    <head>
        <script>
            function sub(){
                insertFrm.submit();
            }
        </script>
    </head>
    <body>
        <form name='insertFrm' action="insertProc">
            TEST ID : <input type='text' name='TEST_ID'> <br>
            TEST NAME : <input type='text' name='TEST_NAME'><br>
            <input type='button' value='submit' onclick="sub()">
        </form>
    </body>
</html>

 

3. insert form 데이터를 저장 처리 하기 위해 router 에 메소드를 추가 합니다.

 

testRouter.js

 

let mime = require('Mime');
let path = require('path');
let mariadbModule = require(__BASE + 'dataaccess/mariadbConn');
module.exports = function(app, fs)
{
   //app.use 로 받으면 method 에 관계 없이 호출 받음, app.get 은 get 메소드, app.post 는 post 메소드
   app.get('/', async function(req,res){

            res.render('index', {
				title: "index"
            })

        });

  
   app.use('/list', async function(req,res){

        let sql = "select TEST_ID, TEST_NAME from TEST_TBL";
         //동적 바인트 되는 preparedstatement 를 쓰려면 where TEST_ID=? 와 같이 사용하면 됨
        let rows = await mariadbModule.select(sql,[]); 
         //select함수에서는 sql 문자열, [param1,param2,....] 이런식으로 파라미터가 들어감
        __LOGGER.info("select complete");

        res.render('list', {
            list: rows
            //ejs 에서는 list 라는 이름으로 호출 됨
        })

   });

   app.use('/insert', async function(req,res){

        res.render('insert', {

        })

   });

   app.use('/insertProc', async function(req,res){

        let sql = "INSERT INTO TEST_TBL values (?, ?)";

        console.log(req.query.TEST_ID);
        console.log(req.query.TEST_NAME);

        let params = [];
		//get 방식은 req.query.parameter_name
        //post 방식은 req.body.parameter_name
        params.push(req.query.TEST_ID);
        params.push(req.query.TEST_NAME);

        let result = await mariadbModule.insert(sql,params);

        res.render('insertResult', {
         result: result
        })

   });
   
 }

 

 

4. insert 의 결과를 보여주기 위한 view 페이지를 작성합니다.

   - /views/insertResult.ejs 에 result 볼 수 있는 페이지 작성합니다.

 

insertResult.ejs

 

<html>
    <head>

    </head>
    <body>
        <%= JSON.stringify(result) %>
    </body>
</html>

 

 

5. 저장한 결과를 브라우저에서 확인 합니다.

 

테스트 데이터를 form 에 넣고 submit 버튼 클릭
결과를 보여주는 insertResult.ejs view 화면 (affectedRows 는 반영된 row 수)

 

Database table 에 insert 결과가 잘 들어간 모습

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


댓글