본문 바로가기

개발일기/Node.js 공부하기

App - 글수정 (update)

 

// main.js

var http = require('http');
var fs = require('fs');
var url = require('url');
var qs = require('querystring');

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;
    var title = queryData.id;

    if(pathname === '/'){

      if(title === undefined){
        ...
      }else{
        var readFolder = './data';
        fs.readdir(readFolder, (error, filelist) => {
          fs.readFile(`data/${title}`, 'utf8', (error, description) => {
            if(error){
              handleReadError(filelist, response);
              return;
            }

            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>
              `);

            response.writeHead(200);
            response.end(template);
          });
        });
      }
      
    }else if(pathname === '/update' && title !== undefined){
      var readFolder = './data';
      
      fs.readdir(readFolder, (error, filelist) => {  
          fs.readFile(`data/${title}`, 'utf8', (error, description) => {
            if(error){
              handleReadError(filelist, response);
              return;
            }
          var list = templateList(filelist);
          var template = templateHTML('WEB - update', list, `
          <form action="/update_process" method="post">
          <input type="hidden" name="id" value="${title}"/>
          <p><input type="text" name="title" placeholder="title" value="${title}"/></p>
          <p>
          <textarea name="description" placeholder="description">${description}</textarea>
          </p>
          <p>
          <input type="submit"/>
          </p>
          </form>
          `,
          ` <a href="/create">create</a>
            <a href="/?id=${title}">return</a>
          `);
  
          response.writeHead(200);
          response.end(template);
        });
      });  
    }else if(pathname === '/update_process'){
      var body = '';
      request.on('data', (data) => {
        body += data;
      });
      request.on('end', () => {
        var post = qs.parse(body);
        var id = post.id;
        var title = post.title;
        var description = post.description;

        //파일 이름 바꾸기
        fs.rename(`data/${id}`, `data/${title}`, (error) => {
          if(error){
            response.writeHead(503);
            response.end('update failed');
            return;
          }
          //내용 바꾸기
          fs.writeFile(`data/${title}`, description, 'utf8', () => {
            response.writeHead(302, {location : `/?id=${title}`});
            response.end();
          });
        });
  
      })
    }

 

 

1. 파일 이름 바꾸기

fs.rename(파일경로 및 파일이름, 바꿀파일의 경로 및 이름, 콜백함수);

 

2. 내용 바꾸기 (덮어씌우기)

fs.writeFile(파일경로 및 파일이름, 파일내용, 인코딩코드, 콜백함수);

 

 

 

 

 

 

 

 

출처

App - 글수정 - 수정 링크 생성

opentutorials.org/course/3332/21138

App - 글수정 - 수정할 정보 전송

opentutorials.org/course/3332/21139

App - 글수정 - 수정된 내용 저장

opentutorials.org/course/3332/21140