생활코딩/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번으로 설정