Node.js와 MYSQL, SEQUELIZE 연동하기(1)
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에 들어가서
확인해보면 아까 작성한것들이 다 적용된 것을 확인할 수 있다.