kok202
React 강의 정리 (6)

2019. 8. 23. 19:34[정리] 기능별 개념 정리/React

NodeJS

  • 브라우저가 아닌 환경에서도 자바스크립트를 사용할 수 있도록 하는 자바스크립트 런타임.
  • NodeJS 는 웹서버가 아니다.
  • NodeJS 만으로는 아무것도 하지 않는다.
  • HttpServer 를 직접 작성해야한다.

 

 

 

 

 

Express 

  • NodeJS 기반의 HttpServer
  • Routing, Session, Template 등 기능을 제공

 

 

 

 

 

Express 예시

main.js

var express = require('express');
var user = require('./routes/user');

var app = express();
app.get('/', function(req, res) {
    res.send('Hello World');
});
app.use('user', user);
app.listen(3000, function() {
    console.log('Application is listening');
})

router/user.js

var express = require('express');

var router = express.Router();
router.get('/user/:id', function(req, res) {
    res.send('GET user' + req.params.id);
});
router.post('/user', function(req, res) {
    res.status(201).json({success:true});
});
router.put('/user', function(req, res) {
    res.status(400).send(message:'PUT');
});
router.delete('/user', function(req, res) {
    res.send('DELETE request');
});
module.exports = router;
node main.js
/* nodemon : 코드의 변경을 바로바로 재시작 할 수 있게 도와주는 프로그램.
nodemon 을 사용할 경우 nodemon main.js 으로 실행한다 */

 

라우팅

app.HttpMethod(path, handler)

path variable path 안에 콜론이 들어간 경우으로 사용할 수 있다.
request body req.body

 

 

 

 

 

미들 웨어 : Http 요청과 Express 사이에 미들웨어를 삽입하여 Express 에 없는 기능을 만들 수 있다.

main.js

var express = require('express');
var user = require('./routes/user');

var myLogger = function(req, res, next){
    console.log(req.url);
    next();
}

var app = express();
app.get('/', function(req, res) {
    res.send('Hello World');
});
app.use('user', user);
app.listen(3000, function() {
    console.log('Application is listening');
})

이미 만들어진 많은 좋은 미들웨어가 있다.

morgan : loggin 미들웨어

body-parser : json을 파싱해주는 미들웨어

 

미들웨어 적용은 npm 으로 설치한다음 아래와 같이 하면된다.

main.js

var express = require('express');
var user = require('./routes/user');
var morgan = require('morgan');
var bodyParser = require('body-parser');

var app = express();
app.get('/', function(req, res) {
    res.send('Hello World');
});
app.use('user', user);
app.use('/', express.static('public'));
app.use(morgan('dev'));
app.use(bodyParser.json());
app.listen(3000, function() {
    console.log('Application is listening');
})

 

 

 

 

 

public resource를 열어 줄 수도 있다.

main.js

var express = require('express');
var user = require('./routes/user');
var morgan = require('morgan');
var bodyParser = require('body-parser');

var app = express();
app.use('user', user);
app.use('/', express.static('public'));
app.use(morgan('dev'));
app.use(bodyParser.json());
app.listen(3000, function() {
    console.log('Application is listening');
})

public/index.html

<!DOCTYPE html>
<html>
    <head>
        <title>Page Title</title>
    </head>
    <body>
        <h1>This is a Heading</h1>
        <p>This is a paragraph.</p>
    </body>
</html>

 

 

 

 

 

MongoDB

Document : {key:value} 의 집합

Collection : Document 의 집합

Database : Collection 의 집합

Server : Database 가 들어있는 서버

 

 

 

 

 

MongoDB 명령어

MongoDB 는 자바스크립트 기반이라서 MongoDB 안에서 함수를 만들어 사용할 수 있다.

// mongoDB 접속
> mongo

// DB 목록 조회
> show dbs

// DB 선택(존재하지 않아도 가능)
// Document 삽입 = 자동 DB, Collection 생성
> use mongodb_test_database
> db.test_member.insert({"name":"kok202"})
> show dbs

// DB 삭제
> db.dropDatabase()
> show dbs

// Collection CD
> show collections
> db.createCollection("books")
> db.books.drop()

// Document CRUD
> db.createCollection("books")
> db.books.insert({"title": "HelloWorld", "writer":"kok202", "price":3000})
> db.books.insert({"title": "GoodByeWorld", "writer":"kok303", "price":5000})
> db.books.insert({"title": "ThisIsWorld", "writer":"kok404", "price":2000})
> db.books.find()
> db.books.find({"title": "HelloWorld"})
> db.books.find({"price": {$gt: 4000, $lt: 6000}})
> db.books.find({$or: [{"title":"HelloWorld"}, {"writer":"kok303"}]})
> db.books.find().sort(["value":-1])
> db.books.find().limit(2)
> db.books.update({"title":"ThisIsWorld"}, {"price": 9000})
> db.books.remove({"title": "HelloWorld"})

이외 적지 않은 명령어

  • find 할 때 정규표현식을 사용할 수 있다.
  • find 할 때 where 연산자(JS)을 사용할 수 있다.
  • find 할 때 elementMatch을 사용할 수 있다.
  • projection 을 할 수 있다.
  • slice 로 limit 을 설정할 수 있다.
  • Document 를 아예 변경 시킬 수 있다. (_id 값은 그대로 유지된다.)
  • 특정 필드 값을 삭제할 수 있다.
  • upsert 할 수 있다.
  • 필드에 배열을 생성할 수 있다. (push)
  • 베열 필드에 값을 제거할 수 있다.

 

 

 

 

 

'[정리] 기능별 개념 정리 > React' 카테고리의 다른 글

React 기본 강좌 정리 - 3~4  (0) 2020.02.12
React 기본 강좌 정리 - 1~2  (0) 2020.02.11
React 강의 정리 (5)  (0) 2019.08.18
React 강의 정리 (3,4)  (0) 2019.08.18
React 강의 정리 (2)  (0) 2019.08.18