티스토리 뷰
https://velog.io/@new_wisdom/Node.js-5-HTTP
위에 반드시 읽어보기.
Sequalize?
라이브러리.
node.js 에서 mysql을 쉽게 다룰 수 있게 도와주는 라이브러리
ORM(Object-Relational-Mapping)으로 분류한다.
SQL작성법을 몰라도 사용이가능함.
ORM?
Sequelize는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 유용한 도구라는 의미
자바스크립트 구문을 알아서 SQL문으로 변경해준다
설치 및 시작
1. git clone, npm install 설치
2. 공식문서 를 통하여 sequalize 라이브러리 설치
2.1 : npm install --save sequelize
2.2 : npm install --save-dev sequelize-cli
3. ORM 설정 (설치한 라이브러리 설정)
3.1 : npx sequelize-cli init <- bootstraping 설치 : 기본적인거 알아서 깔아주는작업
3.2 : config/config.json 위에서 설명한것처럼 데이터베이스 연결하는 방법이다.
지난번 스프린트는 환경변수로 .env파일을 만들어서 작업해줬었지만 sequalize 라이브러리에서는 env. 파일을 만들지않는다. 대신?
config.json 가서 비밀번호를 변경
💡 기본적으로 bootstriaping을 설치하면 config가 자동생성되는데 이때 아래와 같이 세가지가 설치되어있다.
- development : 개발용
- test : 테스트용
- production : 배포용
모델 index.js에 가보면 const env = process.env.NODE_ENV || 'development' <- 지금은 development를 사용하니까 아래와같이 password는 development만 바꾸면됨
export NODE_ENV=production 하면 다른 환경으로 바꿀 수 있다고 어디서 찾앗다. ㅋㅋㅋㅋ
{
"development": {
"username": "root",
"password": "1234",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
모델설정
1. 데이터베이스를 만들자
1.1 : mysql -u root -p mysql 을 실행
1.2 : CREATE DATABASE database_development; DB생성 (다른이름으로 하면 실행안될가능성있음. 스프린트와 같은이름으로)
1.3 : USE database_development; 해당 DB를 사용
2. 모델 생성
유어크래스에서 하라는것?
- url, title, visits 필드를 생성해야 합니다.
- id, createdAt, updatedAt 필드는 자동으로 생성됩니다.
2.1 터미널에 이렇게 치면 npx sequelize-cli model:generate --name url --attributes url:string,title:string,visits:integer
migrations라는 폴더가 생기며 자동으로 이런 파일이 생성된다.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('urls', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
url: {
type: Sequelize.STRING
},
title: {
type: Sequelize.STRING
},
visits: {
type: Sequelize.INTEGER,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('urls');
}
};
마이그레이션?
공식문서를 참고해보면. 위에서 한것들은 필요한 데이터베이스,모델,마이그레이션 파일들을 하나 만든것뿐
공식문서 said :
첫 번째 모델인 에 필요한 모델과 마이그레이션 파일을 방금 만들었습니다
데이터베이스에 아무 것도 삽입하지 않았습니다.
npx sequelize-cli db:migrate. <- 이 명령어를 치면 테이블이 생성 된다고한다.
마이그레이션을 진행하면 ? 데이터베이스에 테이블이 생성된다는뜻.
MySql로 데이터베이스 확인하기
1. show databases;
2. use database_development
3. show tables;
4. DESC urls
5. DESC users
'백엔드&컴퓨터사이언스' 카테고리의 다른 글
데이터베이스 개념 정리 (0) | 2021.12.25 |
---|---|
[데이터베이스] Sequalize(프로미스지원. 비동기 !!!) : part2 MVC 패턴을 적용하여 코드작성 (0) | 2021.12.23 |
[데이터베이스][MVC] 과제 flow 완전분석 : im-sprint-cmarket-datagbase2 (0) | 2021.12.22 |
[데이터베이스][MVC] 과제 flow 완전분석 : im-sprint-cmarket-datagbase (0) | 2021.12.21 |
[데이터베이스] MVC (0) | 2021.12.21 |