database/MYSQL

MYSQL // sequelize 사용하기 (기본 요약)

부엉이사장 2022. 8. 30. 22:55

# sequelize 란?

자바스크립트 문법으로 데이터베이스 조작가능.

 

# 시작

- npm i sequelize sequelize-cli mysql2 설치

- npx sequelize init 치면 폴더 여러개 생길거임.

congif : 쓸 데이터베이스 정보. 보통은 password, database를 조작함.

models : 여기에 데이터베이스 테이블 js 파일을 집어넣음. 단수형으로.

seeder : 모름

migrations : 모름

 

 

# 제로초 예제

https://github.com/ZeroCho/nodejs-book/blob/master/ch7/7.6/learn-sequelize/models/index.js

 

GitHub - ZeroCho/nodejs-book

Contribute to ZeroCho/nodejs-book development by creating an account on GitHub.

github.com

 

 

# 실습하기

1. config.json의 데이터베이스 정보를 넣어준다.

암호랑 데이터베이스이름 등 수정해줬음.

config.json에 데이터베이스는 실제로 안만들어지더라.

이건 워크벤치에서 만들어줬다.

 

2. models(테이블관리)

# index.js

const Sequelize = require('sequelize');
const Address = require('./address');
// const Comment = require('./comment');

const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};

const sequelize = new Sequelize(config.database, config.username, config.password, config);

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

db.Address = Address;

Address.init(sequelize);

module.exports = db;

# address.js

const Sequelize = require('sequelize');

module.exports = class Address extends Sequelize.Model {
  static init(sequelize) {
    return super.init({
      customer : {
        type: Sequelize.STRING(20),
        allowNull: false,
        unique: true,
      },
      address: {
        type : Sequelize.STRING(30),
        allowNull : false,
      },
      comment: {
        type: Sequelize.TEXT,
        allowNull: true,
      },
      created_at: {
        type: Sequelize.DATE,
        allowNull: false,
        defaultValue: Sequelize.NOW,
      },
    }, {
      sequelize,
      timestamps: false,
      underscored: false,
      modelName: 'Address',
      tableName: 'addresses',
      paranoid: false,
      charset: 'utf8',
      collate: 'utf8_general_ci',
    });
  }
};

이렇게 설정을 해주자. 

index.js는 전체관리인듯. 실제 테이블은 없음.

 

 

3. 서버파일에서~

const { sequelize } = require('./models');
const Address = require('./models/address');

이렇게 sequelize가져오고 테이블 js 파일 가져온다음

 

시퀄라이즈 싱크해줘야함.

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

그다음 아래 코드입력하면

Address.create({
    customer : '1',
    address : '햇님동 달빛길',
    comment : '친구야~'
})

데이터 입력됨.

 

 

 

 

++추가해서 

위에 Address테이블 가져온건 프로미스로 되더라.

console.log(Address.findAll(), '여기')

이게 프로미스 펜딩으로 나옴.

데이터 보려면

        const addresses = await Address.findAll();
        console.log('여기', addresses[0].dataValues)

이렇게 해야함.

'database > MYSQL' 카테고리의 다른 글

MYSQL // pool 생성  (0) 2022.08.31
MYSQL // row쿼리 사용하는 연동하기.  (0) 2022.08.30
MYSQL // 복습  (0) 2022.08.29
MYSQL // CRUD 작업  (0) 2022.07.09
MYSQL // 테이블 생성 및 워크벤치  (0) 2022.07.08