본문 바로가기
학습/Node.js

노드 ORM 시퀄라이저

by 코동이 2022. 1. 17.

* 개요

 

앞서, 코드 리팩토링을 통해 user API 코드들을 개선했습니다. 이제, DB와 연동해서 실제 데이터를 활용 할 예정입니다.

ORACLE, MYSQL 등의 DB를 연동해서 사용할 수도 있지만, ORM을 사용합니다. node에서 만든 객체를 활용해 바로 DB에 연동시켜 좀 더 객체지향적으로 코드를 짤 수 있습니다.

 

* 모델

 

데이터베이스에서 테이블을 ORM으로 추상화 한 것을 model이라고 합니다.

 

node js에서는 ORM으로 시퀼라이저를 사용합니다.

 

package.json의 dependencies에 sequelize, sqlite3 의존성을 추가하도록 합니다.

 

//models.js

const Sequelize = require('sequelize');
const sequelize = new Sequelize({
    dialect: 'sqlite',
    storage: './db.sqlite',
    logging: false
});

const User = sequelize.define('User', {
    //name: Sequelize.STRING //varchar255
    name: {
        type: Sequelize.STRING,
        unique: true
    }
});

module.exports = {Sequelize, sequelize, User};

 

sequelize 의존성을 불러와서 문법과 저장소를 설정합니다.

파일 형식으로 만드는 내부 저장소 sqlite를 사용합니다.

 

sequelize.define으로 User 객체를 생성합니다.

sequelize.define()으로 생성하며, name이라는 칼럼을 가지고 중복이면 안됩니다.

 

Seqeulize, sequelize, User 모두 외부 모듈로 만듭니다.

 

* sync (동기화)

 

// /bin/sync-db.js

const models = require("../models");

module.exports = () => {
    return models.sequelize.sync({force : true});
}

 

sync의 매개변수 force가 true이면 데이터베이스가 계속 초기화된단느 것을 의미합니다.

 

 

node bin/sync-db.js

 

node 명령어로 sync-db.js를 실행하면 storage에 설정한 db.sqlite파일이 생성됩니다.

 

// /bin/www.js

const app = require("../index");
const syncDb = require("./sync-db");

syncDb().then(_ => {
    console.log('Sync databases!');
    app.listen(3000, () => {
        console.log("서버가 실행됐습니다");
    });
});

 

snyc-db는 애플리케이션이 실행될때마다 작동합니다.

따라서 애플리케이션 실행하는 시점에서 작동할 수 있도록 모듈로 만들어 app.listen()을 합니다.

 

*정리

 

노드의 ORM은 sequelize 가 있고 추상화된 것을 model이라고 합니다.

저장소를 설정, sync설정 및 사용할 테이블 정의를 해줍니다.

 

반응형

'학습 > Node.js' 카테고리의 다른 글

데이터베이스를 사용해 API 요청하기  (0) 2022.01.17
라우터 컨트롤러 함수로 분리  (0) 2022.01.17
TDD로 API 서버 개발하기  (0) 2022.01.15
mocha, should, supertest 사용하기  (0) 2022.01.15
강의 후기  (0) 2022.01.15