생활코딩/WEBn
[Node.js] 개요 - CRUD(Create, Read, Update, Delete)
hayjo
2020. 9. 10. 19:50
[강의 출처] opentutorials.org/course/3332
WEB2 - Node.js - 생활코딩
수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코드를 생성하는 웹애플리케이션을 만드는 방법에 대한 수업입니다. 수업대상 예를들어 1억개의 페이지로 이루어진 웹사
opentutorials.org
CRUD(Create, Read, Update, Delete)
- fs(file system) 모듈을 이용. 보통 아래 형태로 모듈을 호출
- const fs = require('fs');
Create file
var fs = require('fs');
fs.writeFile('sample.txt', 'content', 'utf8', function(err){
// console.log(err);
});
Read file
var fs = require('fs'); // fs 모듈 호출
fs.readFile('sample.txt', 'utf-8', function(err, data){
console.log(data); // sample.txt의 내용 출력
});
Read Directory
var fs = require('fs'); // fs 모듈 호출
var dir = './data';
fs.readdir(dir, function(err, files){
console.log(files); // ['data', '폴더내의', '파일명', '어레이'] 출력
});
Rename file
var fs = require('fs'); // fs 모듈 호출
fs.rename(`old file path`, `new file path`, function(err){
};
콘솔에서 arguments 입력받기
js에서는 process.argv로 콘솔에 입력된 데이터 어레이를 가져올 수 있다. 예를 들어 sample.js의 내용이 아래와 같을 때,
console.log(process.argv);
맥 터미널에서 아래와 같이 입력하면
$ /usr/local/bin/node sample.js helloworld
아래와 같은 결과가 출력된다.
[
'/usr/local/bin/node', // node runtime path
'sample.js_file_path/sample.js', // sample.js 경로
'helloworld' // input data
]
입력된 데이터 목록만 필요한 경우, process.argv를 slice로 인덱싱하면 된다.
process.argv.slice(2);
Delete file
var fs = require('fs');
fs.unlink('sample.txt', function(err){
//console.log(err)
});
fs.readFile을 이용해 아래처럼 데이터를 읽어온 다음, 템플릿에 얹어서 출력 가능
var http = require('http');
var fs = require('fs');
var url = require('url'); // node에서 url 모듈 호출
var app = http.createServer(function(request, response){
var _url = request.url; // 요기는 모듈 아니고 유저한테 입력받은 url, 구분을 위해 _ 추가
var queryData = url.parse(_url, true).query; // 입력받은 url 파싱
if(_url == '/'){ // id 입력 없이 홈페이지로 접속했다면
template = 'Welcome'; // 보여줄 내용 선택
}
response.writeHead(200);
var title = queryData.id; // 유저가 입력한 데이터에서 id 추출
fs.readFile(`data/${title}`, 'utf-8', function(err, description){ // 파일 읽기
var template = `File Content: ${description}`; // 템플릿에 저장
response.end(template); // 사용자가 요청한 데이터를 보여주는 부분
});
});
app.listen(3000); // 포트번호는 3000번으로 설정