Skip to main content

Command Palette

Search for a command to run...

[Node.js] Sequelize 기초 및 개념

Updated
2 min read

ORM

  • Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것

  • SQL query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 객체 지향 프로그래밍에 집중할 수 있다.

Sequelize

  • MySQL, MaraiDB, MS SQL 등 관계형 데이터베이스를 위한 promise 기반 Node.js ORM 도구

  • promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있다.

Sequelize 설치

npm install sequelize sequelize-cli mysql2 // sequelize 설치
sequelize init // sequelize 초기화

sequelize init을 완료하면 해당 작업 경로에 config, migrations, models, seeders와 같은 폴더들이 생긴다.

.
├── config 
├── migrations 
├── models  
├── seeders
  • config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보가 들어있음

  • migrations : 데이터베이스의 변화하는 과정들을 추적해나가는 정보로 실제 데이터베이스에 반영할 수 있음

  • models : 데이터베이스 각 테이블의 정보 및 필드 타입을 정의하고 하나의 객체로 만들어 사용

  • seeders : 테이블에 기본 데이터를 넣을 때 사용

model 생성

sequelize model:generate --name Customer --attributes id:integer,name:string, email:string, phone:string, address:string

model 옵션

  • type - DataTypes : STRING, INTEGER, FLOAT, DOUBLE, BOOLEAN ...

  • allowNull - Boolean : Null 허용 여부 (default: true)

  • defaultValue - any : 기본값 설정(default: null)

  • unique - Boolean : 유일한 값 여부 (default: false)

  • primaryKey - Boolean : primary key 여부 (default: false)

  • autoIncrement - Boolean : 자동으로 값을 1씩 증가 (default: false)

model 예시

customer.init({ 
id: { type: DataTypes.INTEGER, 
    allowNull: false, 
    primaryKey: true,
    autoIncrement: true}, 
name: { type: DataTypes.STRING, allowNull: false }, 
email: { type: DataTypes.STRING, allowNull: false }, 
phone: { type: DataTypes.STRING, allowNull: false }, 
address: { type: DataTypes.STRING, allowNull: true } 
}, { 
sequelize, 
timestamps: false, 
modelName: 'customer', 
});

참고자료

https://sequelize.org/

https://resilient-923.tistory.com/276

More from this blog

[ZSH] tree 사용하기

들어가며 큰 규모의 프로젝트를 출시한 뒤, 후일을 위해서 더 늦기 전에 파일 정리 및 문서화를 진행해야했다. 문서화 작업을 하는 중에 기왕 정리하는 거 파일 구조를 이쁘게 트리 구조로 나열하여 코멘트를 달면 나중에 보더라도 이해하기 더 쉬울 것 같았다. 어떻게 해야 간지나는 트리 구조를 만들 수 있을까 방법을 찾다보니 역시나 파일 구조를 트리로 이쁘게 출력해주는 커맨드 툴이 존재했다. tree 커맨드에 대해서 알아보고 알짜배기 내용만 정리했다....

Feb 21, 20242 min read

[Next.js] parallel routes & intercepting routes

트위터 로그인 모달창을 만들어보며 넥스트의 parallel routes 와 intercepting routes 을 학습한 내용을 정리해보았습니다. 트위터 로그인 창을 확인해봅시다. 루트 디렉토리 화면을 배경으로 i/flow/login 페이지가 동시에 표시되고 있습니다. 저는 app router 를 학습하기 전까지는 createPortal 을 사용하여 포탈 영역에 로그인 컴포넌트를 띄우는 방식을 사용했었습니다. const NoLogin =()=...

Feb 1, 20244 min read

C/C++ 이진 트리(binary tree) 개요 및 구현(1)

개요 트리는 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조이다. 하위 트리가 존재하고, 그 노드에 또 하위 트리가 존재하는 자료구조 이다. 트리의 맨 위에 있는 루트 노드가 존재한다. 우리가 알아볼 트리는 이진 트리이다. 이진 트리는 자식 노드(부모로부터 아래로 이어진 노드)가 2개 이하인 구조를 말한다. 트리의 사용 사례로는 다음과 같다 계층 적 데이터 저장(파일,폴더) 효율적인 검색 속도 힙 데이터 베이스의 인덱싱 트리에 ...

Jan 31, 20244 min read

[React] Server component (RSC)

React.js 18 에 도입된 리액트 서버 컴포넌트는 서버에서 동작하는 리액트 컴포넌트를 의미합니다. Next가 권장하는 라우팅 방식인 app router의 기반이 되는 컴포넌트이기 때문에 app router 를 이해하기 위해서는 server component 에 대한 이해가 필요합니다. server component 리액트는 클라이언트단만을 컴포넌트화하는 대신, server component라는 개념을 통해 서버 영역을 컴포넌트화합니다. ...

Jan 29, 20243 min read

Flutter, JavaScript

42 posts