ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Node.js - 글 삭제하기
    Node.js 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 설정

     

     

Designed by Tistory.