설치
sequelize-cli : 시퀄라이즈 명령어를 실행하기 위한 패키지
mysql2 : mysql과 시퀄라이즈를 이어주는 드라이버
$ npm init -y
$ npm install express morgan sequelize sequelize-cli mysql2
세팅
다음 명령어를 호출하면 config, migration, models, seeders 디렉토리가 생긴다.
$ npx sequelize init
config 디렉토리 안 config.json에서 development 속성들을 내가 사용할 데이터베이스에 맞춰서 변경해준다.
development을 수정하는 이유는 현재 코드를 작성하는 개발환경이 development이기때문.
(혹시 operatorAliases 속성이 들어 있다면 삭제해주자.)
// config/config.json
{
"development": {
"username": "root", // root말고 다른 username을 적어줘도 무방
"password": "4567", // 비밀번호
"database": "newHome", // 사용하는 db이름
---------------------------- 여기까지 변경할 최소한의 정보
---------------------------- 밑은 필요하면 변경하자
"host": "127.0.0.1",
"dialect": "mysql"
},...
+) config.json에서 설정한 값으로 데이터베이스만!!! 생성하고 싶을때
$ npx sequelize-cli db:create
데이터베이스와 mysql을 연결하기
models 디렉토리 안 index.js 파일 내용을 간단히 다음과 같이 바꾼다.
const Sequelize = require("sequelize");
const env = process.env.NODE_ENV || "development";
const config = require("../config/config")[env]; // 데이터베이스 설정을 불러옴
const db = {};
// 데이터베이스 - mysql 연결
const sequelize = new Sequelize( // 새 시퀄라이즈 객체를 만들어서
config.database, // 불러온 데이터베이스(mysql)과 연결한다.
config.username,
config.password,
config
);
db.sequelize = sequelize; // 재사용을 위해서 db.sequelize에 저장
module.exports = db;
express와 시퀄라이즈 연결하기
const express = require("express");
const path = require("path");
const morgan = require("morgan");
const app = express();
const { sequelize } = require("./db/models");
app.set("port", process.env.PORT || 4001);
sequelize.sync({ force: false })
app.use(morgan("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));
app.listen(4001);
- 앞에서 정의한 db.sequelize를 불러오자.
- sync 메서드를 사용하면 서버 실행시 mysql과 연동이 가능하다.
- 옵션을 force:true로 설정지 서버 실행할때마다 테이블 재생성
- mysql과 연동시 config/config.json 정보 재생성됨
sequelize.sync({ force: false })
잘 실행되는지 안되는지 알고싶을때는 promise 문법을 사용해 작성하면 된다.
sequelize.sync({ force: false })
.then(() => {
console.log("db connect!");
})
.catch((err) => {
console.log("sequelize error!");
console.error(err); // 에러출력코드
});
여기까지 무리없이 실행된다면
express-sequelize-mysql간의 연결이 훌륭하게 끝났다.
'프로그래밍 > database' 카테고리의 다른 글
fs모듈 : 파일 다루기 (0) | 2022.07.17 |
---|---|
시퀄라이즈로 테이블, 모델 생성하기, 관계정의하기 (0) | 2022.07.17 |
[220314] API / 인터페이스 / UI (0) | 2022.03.14 |
[220307] 서로 다른 서버끼리 통신하기(CORS, Access-Control-Allow시리즈) (0) | 2022.03.14 |
[220307] 응답코드를 여러가지 방식으로 작성하기 (fetch, axios, async/await) (0) | 2022.03.10 |
댓글