본문 바로가기
DBMS/4. 웹서버-DB서버 통신

sequelize

by 혀닙 2022. 5. 4.

목차

  1. 환경설정
  2. 시퀄라이즈 객체 생성하기
  3. 접속하기
  4. 모델 정의하기

 

 


 

1. 환경 설정

1-1. 설치

$ npm i mysql2 sequelize

 

1-2. 가져오기

const {Sequelize} = require('sequelize')

 

 

 

 

2. 시퀄라이즈 객체 생성하기- 접속에 대한 정보 작성

  • 인자값 4개
  1. 데이터 베이스명
  2. DB 계정명
  3. DB 계정의 비밀번호
  4. 객체 형태의 config

    4-1. host: 'localhost'

    4-2.dialect: 사용하는 DBMS의 종류

    4-3. pool(옵션)

const sequelize = new Sequelize('example','userid','password',{
    host: 'localhost',
    dialect: 'mysql'
})

 

 

 

 

 

3. 접속 하기

 

3-1. promise로 작성

sequelize.sync().then(data=>{
    console.log('접속됨')
})
.catch(error => {
    console.log('접속실패함')
})

 

 

 

3-2. async await으로 작성

async function init(){
    try{
        await sequelize.sync()
        console.log('접속')
    } catch{
        console.log('접속 실패')
    }
}

init()

 

 

 

아래와 같은 문구가 뜨면 접속 완료

 

 

 

 

4. 모델 정의하기

모델을 정의할 comment라는 함수를 작성해서

접속 완료 시 실행될 코드 블럭 안에서 호출하자(sync 메서드 이전에 호출)

 

첫번

function comment(){
    sequelize.define('comment',{
        //필드내용
    },{
        //옵션
    })
}

 

필드내용 작성하기 위해 DataTypes 가져오기

DB간의 필드 내용의 작성을 돕는다.

const {Sequelize,DataTypes} = require('sequelize')

 

 

function comment(){
    const COMMENT = sequelize.define('comment',{
        subject:{
            type: DataTypes.STRING(30),
            allowNull:false,
        },
        content:{
            type:DataTypes.STRING(50),
            allowNull:false
        }
    },{
        tableName: 'comments',
        timestamps: false
    })
    return COMMENT //반환값이 객체다!
}


// 아래의 테이블을 객체로 반환
// +---------+-------------+------+-----+---------+----------------+
// | Field   | Type        | Null | Key | Default | Extra          |
// +---------+-------------+------+-----+---------+----------------+
// | id      | int         | NO   | PRI | NULL    | auto_increment |
// | subject | varchar(30) | NO   |     | NULL    |                |
// | content | varchar(50) | NO   |     | NULL    |                |
// +---------+-------------+------+-----+---------+----------------+

 

만약 아래와 같이 sync 메서드 안에 다음과 같은 객체 작성 시,

코드 실행 시 마다 이전 테이블 드랍 후 함수 내용으로 테이블 다시 생성

await sequelize.sync({force: true})

 

 

 

const insert = async () => {
    const COMMENT = comment()
    await COMMENT.create({subject:'asdf', content:'asdfasdf'})
}

 

'DBMS > 4. 웹서버-DB서버 통신' 카테고리의 다른 글

시퀄라이즈1. 환경셋팅  (0) 2022.04.29
# 4-3 mysql2 - 프로미스 API  (0) 2022.03.26
# 4-2 mysql2 - 커넥션 풀  (0) 2022.03.26
# 4-1 mysql2 - 기본  (0) 2022.03.26

댓글