본문 바로가기
Dev/Nodejs-mysql

[Nodejs-mysql] 데이터 수정/삭제하기

by Ellen571 2020. 8. 6.
반응형

[생활코딩] MySQL로 글 수정 기능 구현

[생활코딩] MySQL로 글 삭제 기능 구현

 

수정할 데이터 폼에 출력

 

if(pathname === '/update'){
      db.query('SELECT*FROM topic', function(error, topics){
      // topic 데이터 불러와 topics에 담음
      
        if(error){ throw error; } // 예외처리
        
        db.query('SELECT*FROM topic WHERE id=?', [queryData.id], function(error2, topic){
        // topic의 특정 id값을 가져와 topic에 담음
        // id값은 배열로 가져와 ?에 치환하며, 그 값은 queryData.id
        
          if(error2){ throw error2; } // 예외처리

          var list = template.list(topics); // list인자로 topics 데이터 전달
          var html = template.HTML(topic[0].title, list,
            `
            <form action="/update_process" method="post">
              <input type="hidden" name="id" value="${topic[0].id}">
              <p><input type="text" name="title" placeholder="title" value="${topic[0].title}"></p>
              <p>
                <textarea name="description" placeholder="description">${topic[0].description}</textarea>
              </p>
              <p>
                <input type="submit">
              </p>
            </form>
            `,
            `<a href="/create">create</a> <a href="/update?id=${topic[0].id}">update</a>`
          );
          // 해당 id의 값인 topic은 배열 형태이기에 topic[0]으로 선택해줘야 함
          
          response.writeHead(200);
          response.end(html);
        });
      });
}

 

 

수정된 데이터 데이터베이스에 업데이트 시키기

 

if(pathname === '/update_process'){
      
      var body = '';
      request.on('data', function(data){
          body = body + data;
      });
      
      request.on('end', function(){
        var post = qs.parse(body); // post방식으로 전송된 값 객체 형태로 분석해 post에 담음
        
        db.query('UPDATE topic SET title=?, description=?, author_id=1 WHERE id=?', [post.title, post.description, post.id], function(error, result){
        // post에 담긴 값 해당 id에 업데이트
          response.writeHead(302, {Location: `/?id=${post.id}`});
          response.end();
        });
      });
}

 

 

글 삭제하기

 

if(pathname === '/delete_process'){
      var body = '';
      request.on('data', function(data){
          body = body + data;
      });
      request.on('end', function(){
          var post = qs.parse(body);

          db.query('DELETE FROM topic WHERE id=?', [post.id], function(error, result){
          // id값 가져와 삭제하기
          
            if(error){ throw error; }
            response.writeHead(302, {Location: `/`});
            response.end();
          })
      });
}
반응형