티스토리 뷰

공부 노트

foundation 백엔드 세션 1.

2021bong 2022. 11. 25. 13:51

type

설치

typeorm을 설치해주고 .env파일도 사용할 거라서 함께 설치해준다.

npm install typeorm
npm install dotenv

 

.env 환경변수

.env 환경변수는 이런식으로 설정해주면 된다.

DATABASE_URL = mysql://계정id:계정비밀번호@127.0.0.1:3306/데이터베이스이름 // dbmate 쓸 때 사용
TYPEORM_CONNECTION = mysql // 쓰려는 db이름
TYPEORM_HOST = 127.0.0.1 // db 위치, 로컬호스트
TYPEORM_PORT = 3306 // mysql 전용 포트
TYPEORM_USERNAME = root // 내 mysql 계정
TYPEORM_PASSWORD = myPass // 내 mysql 비밀번호
TYPEORM_DATABASE = myDB // 사용할 mysql 데이터베이스
TYPEORM_LOGGING = TRUE


typeorm과 db 연결해주기

dotenv를 불러와 .env를 읽어오도록 하기

const dotenv = require("dotenv")

dotenv.config()

 

typeorm 불러오기

const { DataSource } = require('typeorm');

 

연결하기

const myDataSource = new DataSource({
    type: process.env.TYPEORM_CONNECTION,
    host: process.env.TYPEORM_HOST,
    port: process.env.TYPEORM_PORT,
    username: process.env.TYPEORM_USERNAME,
    password: process.env.TYPEORM_PASSWORD,
    database: process.env.TYPEORM_DATABASE
})

myDataSource.initialize()
    .then(() => {
        console.log("Data Source has been initialized!")
    })

 

데이터 불러오기

myDataSource.initialize()
    .then(() => {
        console.log("Data Source has been initialized!")
        const DataSource = myDataSource.query(`SELECT * FROM USERS`)
        DataSource.then((data)=> // do someting.. )
    })

 

* 요청을 받아서 처리할 때 이런 식으로 사용한다.

// 예 1
...
const {name, email} = req.query

const queryRes = myDataSource.query(`INSERT INTO users(name, email)
VALUE(?, ?)`,[name, email])

queryRes
  .then((res)=>res.status(201).json({message : 'success'}))
  .catch((res)=>res.status(500).json({message : 'error'}))
...


// 예 2
 app.post('/books', async (req, res) => {
	const { title, description, coverImage} = req.body
    
	await myDataSource.query(
		`INSERT INTO books(
			title,
			description,
			cover_image
		) VALUES (?, ?, ?);
		`,
		[ title, description, coverImage ]
	); 
     res.status(201).json({ message : "successfully created" });
	})

dbmate

db변경이력을 관리한다. git과 비슷하다고 보면 된다.

 

설치

brew install dbmate

 

파일 생성

쿼리가 생성되는 건 아니고 파일만 생성 된다.

dbmate new 테이블 이름

이런식으로 파일이 생성되고 원하는 내용을 추가하면 된다.

-- 생성된 파일
-- migrate:up


-- migrate:down
-- 예시
-- migrate:up
CREATE TABLE books (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    description VARCHAR(2000) NULL,
    cover_image VARCHAR(1000) NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- migrate:down
DROP TABLE books;

 

생성한 파일 실행

up을 하면 up에 있는 코드가 실행돼서 테이블이 생성되고 down을 하면 down에 있는 코드가 실행돼서 테이블이 삭제된다.

dbmate up
dbmate down
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함