Object Relational Mapping
ORM이 통역, 중개 역할을 한다.
객체(Object)에서의 속성은 데이터베이스에서는 각 필드라고 볼 수 있다.
promise-based Node.js ORM
ex) 예시 코드
var Sequelize = require('sequelize');
var db = new Sequelize('chatter', 'root', '');
var User = db.define('User', {
username: Sequelize.STRING
}); // User라는 테이블 username 필드 존재
var Message = db.define('Message', {
userid: Sequelize.INTEGER,
text: Sequelize.STRING,
roomname: Sequelize.STRING
}); // userid, text, roomname 필드가 존재
User.sync()
.then(function() {
return User.create({username: 'Jean Valjean'}); // 필드에 값을 입력
.then(function() {
return User.findAll({where: {username: 'Jean Valjean'}); // 필드 값을 찾는다.
.then(function(users) {
users.forEach(function(user) {
console.log(user.username + ' exists');
});
db.close();
})
.catch(function(err) {
console.log(err);
db.close();
});
SQL문법을 이용해 만들 필요 없이, ORM을 통해 쉽게 테이블을 만들 수 있습니다.
Sequelize 사용을 위해 npm install 설치가 필요합니다.
cli를 통해 ORM을 잘 사용할 수 있도록 bootstraping을 해줘야 합니다.
성공적으로 bootstraping이 끝나면 아래와 같은 파일 및 폴더들이 생성됩니다.
config/config.json
models/
migrations/
seeders/
cli를 통해 모델을 만들어야 합니다.
모델은 엔티티를 객체로 표현한 형태로, 데이터 구조를 기술하고, 데이터에 수행할 수 있는 명령의 모음을 의미합니다.
id, createdAt, updatedAt필드는 자동으로 생성됩니다.
모델을 잘못 만든 경우, 생성된 파일을 직접 수정하거나 삭제 후 명령을 다시 실행할 수 있습니다.
스키마 변경이 있을 경우 마이그레이션을 실행해줘야 합니다.
웹 개발에 있어서 라우터는 컨트롤러로 진입할 수 있게 도와주는 endpoint입니다. 라우터에 컨트롤러를 연결해야 합니다.
ex) /likes URL로 GET 또는 POST 요청을 보낼 경우, likes 컨트롤러의 메소드가 실행되도록 만들 수 있습니다.