node.js + express + mongodb

14
Node.js + Express + MongoDB 를 를를를 를를를를를를를 를를 를를 를를를를를 를를를 2013.3.18

Upload: vincent-park

Post on 15-Jan-2015

866 views

Category:

Technology


9 download

DESCRIPTION

Node.js + Express + MongoDB 를 활용한 웹애플리케이션 개발

TRANSCRIPT

Page 1: Node.js + Express + MongoDB

Node.js + Express + Mon-goDB

를 활용한 웹애플리케이션 개발

티몬 웹개발유닛 박상국

2013.3.18

Page 2: Node.js + Express + MongoDB

Node.js• Server-side ( 익숙한 ) Javascript

• is not Library or Framework

• But Google 자바스크립트 엔진 v8

• Purely Evented

• Non-blocking( 비동기 ) I/O

• Event Loop & Callback Pattern

• Npm (Nodejs Package Manager)

Page 3: Node.js + Express + MongoDB

Apache vs Nginx

Page 4: Node.js + Express + MongoDB

그 동안 우리는 :

puts("Enter your name: ");var name = gets();puts("Name: " + name);

Event Loop

앞으로 우리는 :

puts("Enter your name: ");gets(function(name) {

puts("Name: " + name);});

Page 5: Node.js + Express + MongoDB

Example

Page 6: Node.js + Express + MongoDB

Express• Node.js 용 MVC Framework

• 고성능 , 고품격 (?) 웹 app 개발

• 강력한 라우팅

• Restful

• 쉬운 기능확장

• 템플릿 엔진 Jade

Page 7: Node.js + Express + MongoDB

• node_modules 추가 확장 모듈이 저장되는 곳• public 이미지 , js, css 등의 미디어 파일을 저장한다• routes 데이터 엑세스 및 서버사이드 작업 라우팅 (Controller)

• Viewshtml 등의 템플릿 뷰 . Jade 등의 템플릿엔진 사용 (View)

• app.js main 실행 파일

• package.json 패키지 설정

Express 구조

Page 8: Node.js + Express + MongoDB

Node Template Engine

doctype 5html(lang="en") head title= pageTitle script(type='text/javascript') if (foo) { bar() } body h1 Jade - node template engine #container if youAreUsingJade p You are amazing else p Get on it!

Jade

<!DOCTYPE html><html lang="en"> <head> <title>Jade</title> <script type="text/javascript"> if (foo) { bar() } </script> </head> <body> <h1>Jade - node template engine</h1> <div id="container"> <p>You are amazing</p> </div> </body></html>

Page 9: Node.js + Express + MongoDB

$ express test$ cd test && npm install

Express 시작하기

- 끝 -

Page 10: Node.js + Express + MongoDB

Example

Page 11: Node.js + Express + MongoDB

MongoDB• NoSQL 계의 김연아

• 대용량을 지향하는 문서기반의 데이터구조• 기존 RDBMS 대비 월등한 속도 & 퍼포먼스• ( 익숙한 ) Json 기반의 데이터• No Schema – 관계성을 포기하고 확장성을 선택

• SQL Syntax 에 그나마 가장 근접

• Auto-sharding ( 아직은 미흡 )

• Mongoose

Page 12: Node.js + Express + MongoDB

SQL vs MongoDBSQL Terms/Concepts MongoDB Terms/Concepts

database database

table collection

row document or BSON document

column field

primary keySpecify any unique column or col-umn combination as primary key.

primary keyIn MongoDB, the primary key is au-tomatically set to the _id field.

CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id))

db.users.insert( { user_id: "abc123", age: 55, status: "A" } )

Page 13: Node.js + Express + MongoDB

SQL Terms/Concepts MongoDB Terms/Concepts

INSERT INTO users(user_id, age, status)VALUES ("bcd001", 45, "A")

db.users.insert( { user_id: "bcd001", age: 45, status: "A"} )

SELECT *FROM users

db.users.find()

SELECT * FROM users WHERE status = "A"

db.users.find({ status: "A" })

SELECT user_id, status FROM usersWHERE status = "A“ AND status != “B“AND age > 25 AND age <= 50AND user_id like "%bc%"

db.users.find( { status: "A“, status: { $ne: “B" }, age: { $gt: 25, $lte: 50 }, user_id: /bc/ }, { user_id: 1, status: 1, _id: 0 })

SELECT * FROM usersWHERE status = "A"ORDER BY user_id DESC

db.users.find( { status: "A" } ).sort( { user_id: -1 } )

SELECT COUNT(*)FROM usersWHERE age > 30

db.users.count( { age: { $gt: 30 } } )

SELECT *FROM usersLIMIT 1

db.users.findOne()ordb.users.find().limit(1)

Page 14: Node.js + Express + MongoDB

Example