node.js | TypeORM 적용하기

2022. 10. 1. 16:14·TIL
반응형

TypeORM의 풀링(데이터베이스 연결기능)과 raw query이용하기, 데이터베이스는 mysql사용

🥕 TypeORM설치

npm install mysql2  # typeorm-mysql 연동을 도와주는 드라이버
npm install typeorm

typeorm을 먼저 설치하면 ER_NOT_SUPPORTED_AUTH_MODE에러가 날 수 있다.

mysql2먼저 설치하기!

🥕 dotenv 설정

데이터베이스 관련 환경변수를 관리하기 위해 dotenv를 사용한다.

 

dotenv 설치

npm install dotenv #dotenv 설치

 

프로젝트 루트경로에 .env파일 생성후 환경변수 저장

// .env파일
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_USERNAME = root
TYPEORM_PASSWORD = 비밀번호
TYPEORM_DATABASE = typeorm_prac
TYPEORM_PORT = 3306
TYPEORM_LOGGING = TRUE

환경변수는 string으로 들어가는데 =뒤에는 전부 ""를 붙이거나 전부 안붙여야 한다.

 

typeorm_prac데이터베이스는 미리 만들어놓기

mysql> create database typeorm_prac character set utf8mb4 collate utf8mb4_general_ci;

 

환경변수 불러오기

.env에 저장해놓은 프로젝트 환경변수를 사용하기 위해 불러온다.

// app.js
const dotenv = require('dotenv');
dotenv.config(); // 아니면 한줄로 require('dotenv').config();

 

console.log(process.env); 로 잘 불러오는지 확인해볼 수 있다. 내 컴퓨터 내 환경변수와 방금 추가한 프로젝트 내부 환경변수를 전부 불러온다. 제대로 되지 않았다면 전역변수만 불러옴

(process객체는 node.js의 기본 글로벌 객체이다. require없이 모든 모듈에 접근이 가능하다.그중 환경변수가 담겨있는 .env객체에 접근해서 환경변수를 가져왔다.)

 

🥕 TypeORM-DataSource로 db와 앱 연결

환경변수 이용해서 typeorm-db연결

typeorm의 DataSource를 이용한다.

// db연결 환경세팅
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
});
// 실제 연결은 initialize메소드 사용
myDataSource.initialize();

typeorm의 DataSource는 애플리케이션 코드랑 데이터베이스를 연결시켜주는 역할을 한다.

DataSource를 이용해서 내가 사용할 db(아까 만든거)랑 연결이 되는 myDataSource라는 인스턴스를 만들고,

인스턴스의 Initialize메소드를 이용하면 실제로 연결이 된다.

 

* 잘 연결되었는지 확인하는법

myDataSource.initialize().then(()=>{
    console.log("success")
}).catch(()=>{
    console.log("fail")
});

잘 연결이 되면 success, 아니면 fail이 출력된다.

 

🥕 쿼리 날려보기

데이터베이스와 연결된 myDataSource의 query메소드를 이용한다.

myDataSource.query('SQL쿼리문');

 

db조회

현재 typeorm_prac에 아무 것도 없어서

저번에 만든 justgram데이터베이스에 연결을 하고 users테이블에 있는 데이터들을 가져와보기

.env파일에서 연결 데이터베이스 이름을 바꿔주고

// app.js
myDataSource.initialize().then(()=>{
    console.log("success")
    const queryRes = myDataSource.query('select * from users'); //쿼리의 결과 (queryRes)는 비동기로 오기때문에
    queryRes.then((value) => {   // 여기서 .then()이용
        console.log(value); //출력해서 확인해보기
    });
}).catch(()=>{
    console.log("fail");
});

 

데이터입력

데이터 입력은 보통 요청으로 오는 값을 가지고 입력하게 되는데 변수를 넣어주려면

.query()의 괄호 안에 백틱``으로 쿼리문을 적고 입력값을 ?로 한다. 그리고 뒤에다가 ,를 하고 배열로 값을 적어주면 된다.

myDataSource(`SQL문, 변수는 ?로 적는다`, [변수1, 변수2,...]);
myDataSource.initialize().then(()=>{
    console.log("success");
    const nickname = "테스트";
    const email = "test@test.com";
    const password = "testpassword";

    myDataSource.query(`
    insert into users (email, nickname, password)
    values (?, ?, ?)`,
    [nickname, email, password])
    });

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'TIL' 카테고리의 다른 글

node.js | express, TypeORM 적용한 CRUD API만들기 - 2 API작성  (0) 2022.10.02
node.js | express, TypeORM 적용한 CRUD API만들기 - 1 db(dbmate)  (0) 2022.10.02
LeetCode | 009. Palindrome Number  (0) 2022.09.28
node.js | 인스타그램: 데이터베이스 구축  (0) 2022.09.27
node.js | express로 서버 만들기 - 게시글 등록, 목록조회(DB x)  (0) 2022.09.27
'TIL' 카테고리의 다른 글
  • node.js | express, TypeORM 적용한 CRUD API만들기 - 2 API작성
  • node.js | express, TypeORM 적용한 CRUD API만들기 - 1 db(dbmate)
  • LeetCode | 009. Palindrome Number
  • node.js | 인스타그램: 데이터베이스 구축
이라후
이라후
  • 이라후
    화이팅
    이라후
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • TIL (23)
      • 기타 (26)
      • Python (14)
      • Django (10)
      • JavaScript (8)
      • git & GitHub (8)
      • Web (10)
      • Go (3)
      • wecode (31)
  • 반응형
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이라후
node.js | TypeORM 적용하기
상단으로

티스토리툴바