본문 바로가기
Dev/Nodejs-mysql

[Nodejs-mysql] 폼 만들고 모듈 분리하기

by Ellen571 2020. 8. 7.
반응형

[생활코딩] 저자 생성 기능 구현

 

 

main.js

else if(pathname === '/author/create_process'){
      author.create_process(request,response);
}

 

lib/author.js

var db = require('./db');
var template = require('./template.js');
var qs = require('querystring');

exports.home = function(request, response){
    db.query('SELECT*FROM topic', function(error, topics){
        db.query('SELECT*FROM author', function(error2, authors){
            var title = 'Author';
            var list = template.list(topics);
            var html = template.HTML(title, list,
                `
                    ${template.authorTable(authors)}
                    <style>
                        table { border-collapse: collapse}
                        td {border: 1px solid #333; padding: 5px 10px}
                    </style>
                    <form action="/author/create_process" method="post">
                        <p><input type="text" name="name" placeholder="name"></p>
                        <p><textarea name="profile" placeholder="profile"></textarea></p>
                        <p><input type="submit" value="create"></p>
                    </form>
                `,
                ``
            );
            // table하단에 form 넣기
            // create클릭 시 입력된 값(name, profile) /author/create_process로 넘기기
            
            response.writeHead(200);
            response.end(html);
        });
    });
}

exports.create_process = function(request, response){
    var body = '';
    request.on('data', function(data){
        body += data;
    });
    // form에서 전달된 값 body에 넣기

    request.on('end', function(){
        var post = qs.parse(body); // body값 분석해서 post에 넣기

        db.query('INSERT INTO author (name, profile) VALUES (?, ?)', [post.name, post.profile], function(error, result){
            if(error){ throw error; }
            response.writeHead(302, {Location: `/author`});
            response.end();
        });
        // author데이블에 post로 받은 값 넣기
    });
    
}
반응형