코드코코

[node][react] 회원가입-로그인 페이지 만들기 (2) : sequelize 사용 본문

기록/정리

[node][react] 회원가입-로그인 페이지 만들기 (2) : sequelize 사용

코드코코 2021. 12. 24. 02:59

1. 회원가입-로그인 페이지 만들기 (1) : express-generator 사용 https://codecoco.tistory.com/97

2. 회원가입-로그인 페이지 만들기 (2) : sequelize 사용            https://codecoco.tistory.com/104


sequelize

-Sequelize는 Node.js기반의 ORM으로 Promise 문법을 사용

0. 환경셋팅

$ npm install -g sequelize-cli

$ npm install sequelize sequelize-cli mysql2

 

- 전역설치 하여 커맨더 창에서 sequelize 명령어를 실행할 수 있게 함.

1. DB 기본구조 잡기

$ npx sequelize init

  • config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보들 담고있음.
  • migrations : 데이터베이스 변화하는 과정들을 추적해나가는 정보, 실제 데이터베이스에 반영하거나 변화를 취소할 수도 있다.
  • models : 데이터베이스 각 테이블의 정보 및 필드타입을 정의하고 하나의 객체로 모아줌.
  • seeders : 테이블에 기본 데이터를 넣고 싶은 경우에 사용.

2. DB 관련 설정 해주기

- config/config.json 수정

  • username : DB 유저계정 입력
  • password : DB 유저계정의 비밀번호 입력
  • database : 데이터베이스 이름 입력
  • port : 기본포트가 3306으로 사용하는 포트가 다르다면 입력

- 하지만, config.json 파일은 .env 을 이용할 수 없으니 js 로 바꾸자.

// 수정한 config.js
require("dotenv").config()
const development = {
  username: process.env.MYSQL_USERNAME,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE,
  host: process.env.MYSQL_HOST,
  dialect: "mysql",
  port: process.env.MYSQL_PORT,
  logging: false,
}
const test = {
  username: process.env.MYSQL_USERNAME,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE,
  host: process.env.MYSQL_HOST,
  dialect: "mysql",
}
const production = {
  username: process.env.MYSQL_USERNAME,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE,
  host: process.env.MYSQL_HOST,
  dialect: "mysql",
}
module.exports = { development, test, production }

- 위의 내용 대로 수정하였다면,

npm i dotenv

touch .env : 내용 작성(아래)

MYSQL_USERNAME = "coco"
MYSQL_PASSWORD = "1234"
MYSQL_DATABASE = "sequel"
MYSQL_HOST     = "127.0.0.1"
MYSQL_PORT     = "3307"

- DB 유저가 root가 아닌 것이 궁금하다면, 해당 포스팅 참고

https://codecoco.tistory.com/85

 

[MariaDB] 계정 생성 및 권한 부여 , DB 생성 , Table 생성 , Data 입력

1. MariaDB계정 만들기 > CREATE USER '유저이름'@'localhost' IDENTIFIED BY '패스워드'; - root계정 이외의 계정을 만들어 사용 - localhost 대신에 %를 넣으면 누구나 접근할 수 있게 한다. MariaDB [(none)]>..

codecoco.tistory.com

3. express 앱과 MariaDB 연결하기

- db.sequelize를 불러와서 sync 메서드를 사용해 서버 실행 시 MySQL과 연동

- force 옵션 : 이 옵션을 true로 설정하면 서버 실행 시마다 테이블을 재생성

- 기존 app. js 코드에 추가작성

const { sequelize } = require("./models");

/* 시퀄라이즈 연결 */
sequelize
  .sync({ force: false })
  .then(() => {
    console.log("*** MariaDB 연결 성공 ***");
  })
  .catch((err) => {
    console.error(err);
  });

- 위의 상태로 app.js 를 실행 시키면 아래 에러가 등장, DB가 만들어지지 않아서 발생하는 에러

ConnectionError [SequelizeConnectionError]: Unknown database 'sequel'

4. DB 생성하기

npx sequelize db:create

 

- 따로 bash shell에서 쿼리문을 작성하지 않아도 DB가 생성 것이 확인 됨.

5. 디비접속 확인하기

npm start

 

- 콘솔로 DB연결이 확인 됨.

 

 

 

참조 : nodejs 교과서 - 조현영 지음, [Node.js] sequelize 활용 - .. : 네이버블로그 (naver.com)

 

[Node.js] sequelize 활용 - DB 구성하기

#nodejs #sequelize #노드js #시퀄라이즈 다시 sequelize를 해보려고 하니까 기억이 안남.. 설치부터 init ...

blog.naver.com