코딩/Node.js

Node.js와 MYSQL, SEQUELIZE 연동하기(1)

알쓸신잡주린이 2024. 3. 6. 23:57

MYSQL은 DB인것을 알텐데, SQL문을 모르는 사람들을 위해서 SEQUELIZE 라이브러리를 통해 node.js에서 연동할 수 있다.

 

우선 npm install sequelize@5.22 (오류 안나는 버전) 으로 설치해주고

또 npm install mysql2 까지 설치해준다.

 

가장 최상단 디렉터리에

 

model이라는 폴더를 생성하고, 그 아래에 db.js를 만들어준다.

 

우선 아까 설치한 sequelize를 담는 변수 var Sequelize = require("sequelize")로 정의해주고

 

또 var sequelize를 정의해줌. 그런다음 Sequelize함수에 정보들을 담아 최종 결과를 sequelize에 담아주는 거임.

 

 

괄호안에 class101: database 명

root : ID

1234 : password (원래는 이렇게 쉽게 하면 안된다.)

 

host:"localhost", (어디에 있는 mysql 정보. 나중에 IP가 바뀌면 여기 바꿔주면되겠지)

port : 3306, (보통 mysql은 3306포트를 사용. 법칙임.)

dialect : "mysql" (mysql, mongoDB, oracleDB등 여러가지 DB중에 사용할 DB종류를 명시)

timezone : "+09:00" (한국시간)

define:{

 

charset:"utf8"

collate:"utf8_general_ci"  

위 둘은 한글깨지지 마라고

 

timestamps:true (DB에 데이터 저장할때 언제 만들어졌는지 날짜 데이터 자동생성)

freezeTableName:true (테이블 이름을 내맘대로 만들겠다.)

 

위까지 설정해주면 mysql에 접속할 수 있도록 세팅 완료.

 

그 아래에

 

이렇게 작성을 해주고

 

db를 만든다음에 내보내는걸 작성해주자.

 

var db={};

 

db.sequelize = sequelize;

db.Sequelize = Sequelize;

 

module.exports = db;

 

위 4줄은 그냥 외워서 쓰는것.

 

이제 다시 app.js에 돌아와서

const db = require('./model/db')를 작성해주고

 

이것이 가능한것은 앞에 module.exports = db; 라는걸 사용했기 때문이다.

 

app.js에 계속해서

 

위를 작성해줘야한다.

 

db.sequelize.sync({force:false})를 통해 서버를 켤때마다 데이터가 안날라가게 한다. (true로 하면 계속 초기화 된다)

 

 

 

model폴더에 user.js를 설정해주고

 

위와같이 설정을 해줍니다.

 

autoIncrement는 데이터가 생성되면 자동으로 1,2,3,4,5 이렇게 증가하는 숫자를 부여해줌.

primaryKey:true 는 autoIncrement의 식별값이 바로 이 key값이다라고 정의해주고

allowNull:false 가 되면 값이 빈값이 들어오면 생성이 중단됨.

 

위 코드 아래에

 

위와같이 작성해주고

 

user_id의 column값을 설정해준다.

 

여기까지 해준 다음

 

다시 db.js로 돌아가

 

 

db.users = sequelize.import(__dirname + "/users.js");

를 작성해준다.

 

 이 다음 

mysql command에 들어가서

 

확인해보면 아까 작성한것들이 다 적용된 것을 확인할 수 있다.