티스토리 뷰
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
'공부 노트' 카테고리의 다른 글
[JS] toLocaleString() (0) | 2023.01.12 |
---|---|
[Git] 레포 포크하고 잔디심기 (0) | 2022.11.29 |
[TS] 타입이 없는 자바스크립트 패키지를 사용하고 싶을 때 (feat. 노마드코더) (0) | 2022.11.25 |
[JS] 바닐라 JS에서 fetch에 async 사용해보기 (0) | 2022.11.18 |
[JS] 아스키코드 메소드 (0) | 2022.11.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코딩앙마
- 비주얼스튜디오코드
- 코드잇
- 파이썬
- scss
- 제로초
- Til
- Typescript
- 깃
- js
- 드림코딩
- 저스트코드
- javascript
- 구름에듀
- vscode
- 타입스크립트
- 리액트
- CSS
- TS
- 자바스크립트
- 제이쿼리
- 스파르타코딩클럽
- React
- 회고
- html
- Python
- vue
- map
- 김버그
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함