글 수정

snow·2020년 10월 4일
0

node.js

목록 보기
10/13

글 수정하기

글을 수정(update)할때는 특정 글을 선택해야만 나오고 전체 페이지에서는 나오지 않아야 한다.

따로 빼서 관리할 수 있도록 control을 만들어 주고


추가해준다. home에서는 update 버튼이 있을 필요가 없기 때문에 따로 만들어주지 않았다.

update를 하기 위해서는 누구를 수정하는지에 대한 정보가 필요하다
해당 정보를 쿼리스트링으로 전달해준다.

수정을 위해서는 기존 내용을 가져와야하기 때문에 read 기능이 필요하다.

수정할 내용 부분을 Form으로 바꿔준다.

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 = temtplateHTML(
          title,
          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="/update?id=${title}">update</a>`
        );
        response.writeHead(200);
        response.end(template);
      });
    });

파일명 변경과 내용저장

else if (pathname === "/update_process") {
    var body = "";
    request.on("data", function (data) {
      body = body + data;
    });
    request.on("end", function () {
      var post = qs.parse(body);
      var id = post.id;
      var title = post.title;
      var description = post.description;

      fs.rename(`data/${id}`, `data/${title}`, function (error) {
        fs.writeFile(`data/${title}`, description, "utf8", function (err) {
          response.writeHead(302, { Location: `/?id=${title}` });
          response.end();
        });
      });
    });
  }

0개의 댓글

관련 채용 정보