본문 바로가기
IT/web

Node.js] 게시판 만들기3 // 글 삭제 기능

by 깻잎쌈 2020. 2. 13.
반응형

조회수 늘리는 것 처럼 하면 된다.

 

showpost.ejs

글 삭제 버튼과 전달할 파라미터 설정 

<form method="post" action="/process/deletepost">
    <input type="hidden" name = "id" value = "<%=posts._id%>">
    <input type = "submit" value= "글 삭제">
</form>

 

routes/post.js

글 삭제 메소드 추가 

메소드로 정의해놓은 load로 글 가져와서 delete()로 삭제 후,

파라미터와 함께 redirect

// 해당 포스트 삭제 
var deletePost = function (req, res) {
    
    ...
    if (database) {
         database.postModel.load(paramId, function (err, result) {
            if (err) {
           ..
            }

            if (result) {              
                // 글 삭제  
                result.delete();      
                console.log('글 삭제됨 ');
               
                // page, perpage 파라미터 전달 후 
                // 리스트 조회
                res.redirect('/process/listpost?page=0&perPage=5');

            }
        })
더보기
// 해당 포스트 삭제 
var deletePost = function (req, res) {
    console.log('post.js의 deletepost 호출됨');

    var paramId = req.body.id || req.query.id || req.params.id;
    console.log('요청 파라미터 : ' + paramId);

    var database = req.app.get('database');

    if (database) {
         database.postModel.load(paramId, function (err, result) {
            if (err) {
                console.log('삭제할 글 조회 중 오류 발생 ' + err.stack);

                res.writeHead('200', {
                    'Contett-Type': 'text/html;charset =utf8'
                });
                res.write('<h2>삭제할 글 조회 중 오류 발생</h2>')
                res.end();

                return;
            }

            if (result) {
                
                // 글 삭제  
                result.delete();

                console.log('결과 :' + result);
                console.log('글 삭제됨 ');
                console.log('////////////////////////');              
                
                // page, perpage 파라미터 전달 후 
                // 리스트 조회
                res.redirect('/process/listpost?page=0&perPage=5');

            }
        })


    } else {
        res.writeHead('200', {
            'Content-Type': 'text/html;charset=utf8'
        });
        res.write('<h2>데이터베이스 연결 실패</h2>');
        res.end();
    }


}


module.exports.deletepost = deletePost;

config.js 도 수정하고 

type은 post로 !

module.exports = {
    
    ...
    
    route_info : [
        ...
         // have to 'post!!'
         {file:'./post', path:'/process/deletepost', method:'deletepost', type: 'post'}
     
    ]
    
}
반응형

댓글