4. Event Loop
그 동안 우리는 :
puts("Enter your name: ");
var name = gets();
puts("Name: " + name);
앞으로 우리는 :
puts("Enter your name: ");
gets(function(name) {
puts("Name: " + name);
});
6. Express
• Node.js 용 MVC Framework
• 고성능, 고품격(?) 웹app 개발
• 강력한 라우팅
• Restful
• 쉬운 기능확장
• 템플릿 엔진 Jade
7. Express 구조
• node_modules
추가 확장 모듈이 저장되는 곳
• public
이미지, js, css 등의 미디어 파일을 저장한다
• routes
데이터 엑세스 및 서버사이드 작업 라우팅 (Controller)
• Views
html 등의 템플릿 뷰. Jade 등의 템플릿엔진 사용 (View)
• app.js
main 실행 파일
• package.json
패키지 설정
8. Jade
Node Template Engine
doctype 5 <!DOCTYPE html>
html(lang="en") <html lang="en">
head <head>
title= pageTitle <title>Jade</title>
<script type="text/javascript">
script(type='text/javascript')
if (foo) {
if (foo) { bar()
bar() }
} </script>
body </head>
h1 Jade - node template engine <body>
<h1>Jade - node template engine</h1>
#container
<div id="container">
if youAreUsingJade <p>You are amazing</p>
p You are amazing </div>
else </body>
p Get on it! </html>
11. MongoDB
• NoSQL 계의 김연아
• 대용량을 지향하는 문서기반의 데이터구조
• 기존 RDBMS 대비 월등한 속도 & 퍼포먼스
• (익숙한) Json 기반의 데이터
• No Schema – 관계성을 포기하고 확장성을 선택
• SQL Syntax 에 그나마 가장 근접
• Auto-sharding (아직은 미흡)
• Mongoose
12. SQL vs MongoDB
SQL Terms/Concepts MongoDB Terms/Concepts
database database
table collection
row document or BSON document
column field
primary key primary key
Specify any unique column or column co In MongoDB, the primary key is automa
mbination as primary key. tically set to the _id field.
CREATE TABLE users (
id MEDIUMINT NOT NULL
db.users.insert( {
AUTO_INCREMENT,
user_id: "abc123",
user_id Varchar(30),
age: 55,
age Number,
status: "A"
status char(1),
})
PRIMARY KEY (id)
)
13. SQL Terms/Concepts MongoDB Terms/Concepts
db.users.insert( {
INSERT INTO users(user_id, age, status)
user_id: "bcd001", age: 45, status: "A"
VALUES ("bcd001", 45, "A")
})
SELECT *
db.users.find()
FROM users
SELECT * FROM users
db.users.find({ status: "A" })
WHERE status = "A"
db.users.find(
{ status: "A“, status: { $ne: “B" },
SELECT user_id, status FROM users
age: { $gt: 25, $lte: 50 },
WHERE status = "A“ AND status != “B“
user_id: /bc/
AND age > 25 AND age <= 50
},
AND user_id like "%bc%"
{ user_id: 1, status: 1, _id: 0 }
)
SELECT * FROM users
db.users.find( { status: "A" } ).sort( { user_id: -
WHERE status = "A"
1})
ORDER BY user_id DESC
SELECT COUNT(*)
FROM users db.users.count( { age: { $gt: 30 } } )
WHERE age > 30
SELECT * db.users.findOne()
FROM users or
LIMIT 1 db.users.find().limit(1)