Node.js

Node.js - 글 삭제하기

Starters 2020. 8. 24. 19:20

delete 만들 때 링크(a태그)로 만들면 수정과 같이 어떠한 페이지로 이동된다.

따라서 만약 delete버튼을 눌렀을 때 바로 삭제를 하고 싶다면,

절대! 링크로 만들면 안된다.

이러면 안돼

delete 버튼 만들기

var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var pathname = url.parse(_url, true).pathname;
    console.log(pathname);

    if(pathname === '/'){
      if(queryData.id === undefined){
        fs.readdir('./data', function(error, filelist){
          var title = 'Welcome';
          var description = 'Hello, Node.js';
          var list = templateList(filelist);
          var template = templateHTML(title, list,
             `<h2>${title}</h2><p>${description}</p>`,
             `<a href="/create">create</a>`
           );
          response.writeHead(200);
          response.end(template);
        });
      } else{
        fs.readdir('./data', function(error, filelist){
          fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
            var title = queryData.id;
            var list = templateList(filelist);
            var template = templateHTML(title, list,
               `<h2>${title}</h2><p>${description}</p>`,
               `<a href="/create">create</a>
               <a href="/update?id=${title}">update</a>
               <form action="/delete_process" method="post" onsubmit="">
                <input type="hidden" name="id" value="${title}">
                <input type="submit" value="delete">
              </form>`
             );
            response.writeHead(200);
            response.end(template);
          });
        });
      }

 

onsubmit 은 글이 만약 바로 삭제 된다면 무섭기 때문에, 안에 자바스크립트 통해 alert()로 삭제할 것인지 알린다던지 할 수 있음

 

delete 기능 추가

    } else if(pathname === '/delete_process'){
      var body = '';
      request.on('data', function(data){
        body += data;
      });
      request.on('end', function(){
        var post = qs.parse(body);
        var id = post.id;
        fs.unlink(`data/${id}`, function(error){
          response.writeHead(302, {Location: `/`});;
          response.end();
        });
      });
    } else{
      response.writeHead(404);
      response.end('Not found');
    }
});
app.listen(3000);

fs.unlink() 통해 파일 삭제

삭제가 끝나면 home으로 돌아가도록 redirection 설정