// 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
'개발일기 > Node.js 공부하기' 카테고리의 다른 글
OOP (Object Oriented Programming) - 객체 지향 프로그래밍 (0) | 2021.04.10 |
---|---|
App - 글삭제 (delete) (0) | 2021.04.09 |
App - 글생성 UI 만들기 & POST 방식으로 전송된 데이터 받기 & 파일생성과 리다이렉션 (0) | 2021.04.09 |
Node.js - 패키지 매니저와 PM2 (0) | 2021.04.09 |
Node.js - 파일 목록 알아내기 & App - 글목록 출력하기 (0) | 2021.04.07 |