sequelize 사용해서 node.js에서 mysql DB 연결하기

1. 설치

 

https://inpa.tistory.com/entry/ORM-%F0%9F%93%9A-sequelize-cli-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

[ORM] 📚 sequelize-cli 모듈 사용하기

sequelize-cli 모듈 [sequelize-cli] 데이터베이스가 구축되지않더라도, 프로젝트만 받아서 설정하고 서버실행만 하면 알아서 데이터베이스 테이블 생성해주는 라이브러리이다. 누군가의 프로젝트를

inpa.tistory.com

 

npm i sequelize sequelize-cli mysql2로 설치

 

 

2. 초기화

 

npx sequelize init

 

 

config랑 models, migrations 폴더가 생성됨

 

 

3. db create

 

npx sequelize db:create

 

만약,

 

ERROR: connect ECONNREFUSED 127.0.0.1:3306이 나오면 mysql 설치해야함

 

 

그리고 

 

ERROR: Access denied for user 'root'@'localhost' (using password: NO)가 나오면...

 

 

 

config.json에서 비밀번호를 mysql 설치할때 root db 비밀번호랑 동일하게 설정해줘야함

 

 

4. model 정의

 

models 폴더에 필요한 데이터모델 정의

 

예를 들어 user모델

 

//models/user.js

const Sequelize = require('sequelize')

module.exports = class User extends Sequelize.Model {
    static init(sequelize) {
        return super.init(
            {
                //sequelize는 id 자동 생성함(auto_increment)

                email: {
                    type:Sequelize.STRING(40),
                    allowNull: true, //null 허용
                    unique: true, //중복 비허용
                },

                name: {
                    type: Sequelize.STRING(20),
                    allowNull: false,
                },

                password: {
                    type: Sequelize.STRING(200), //해시암호화에 의해 문자가 길어져서, 여유있게 용량을 잡아줘야함
                    allowNull: true, //카카오 같은 api 로그인할 시 직접 비밀번호를 설정하지 않으면 null일 수 있다
                }

            },
            {
                sequelize,
                timestamps: true, //createdAt, updatedAt 자동 생성,
                underscored: false, //이건 뭔데
                modelName: 'User', //모델명
                tableName: 'users', //테이블명
                paranoid: true, //deletedAt 자동 생성
                charset: 'utf8', //한글 입력 설정
                collaate: 'utf8_general_ci',

            }
        )
    }
}

 

5. 모델과 db연결

 

//모델 모듈 불러오기
const User = require('./user')

// //db객체에 모델 정보 넣기

db.User = User;

let sequelize;
if (config.use_env_variable) {
  sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  sequelize = new Sequelize(config.database, config.username, config.password, config);
}


//모델 - 테이블 연결하기
User.init(sequelize)

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

 

6. db 연결하기

 

app.js 혹은 server.js에 다음과 같이 작성

 

const sequelize = require('./models').sequelize;

sequelize
    .sync({ force: false })
    .then(() => {
  console.log('데이터베이스 연결 성공')
})
    .catch(err => {
  console.error(err)
})

 

7. 확인

 

npm start로 실행

 

 

연결에 성공하면 mysql workbench에 들어가서 확인해보면..

 

 

config.json에서 맨 처음에 설정된 "development" 쪽의 "database"에 설정된 이름의 db에 테이블이 생성되어 있음

 

https://alencion.tistory.com/48

 

[Nodejs] Sequelize로 DB연결하기.

Seqeulize 사용하기seqeulize는 nodejs에서 웹을 데이터베이스에 연동할 때 사용하는 미들웨어이다. seqeulize는 DB에서 조회 된 값을 객체로 전달해주는 ORM(object-relational mapping)이다.Seqeulize 사전작업 npm에

alencion.tistory.com

 

 

TAGS.

Comments