본문으로 바로가기
 

typeorm/typeorm

ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Elect...

github.com

 

설치

yarn add typeorm

 

config

 

우선 세팅 전 mysql이나 postgresql 등 사용할 관계형 데이터 베이스를 로컬 환경에서 제대로 세팅해두자.

필자는 postgresql을 사용했다. (darrengwon.tistory.com/726)

 

우선 pg 패키지를 설치하자. pg 문서 읽어보면 나오겠지만 node환경에서 postgresql을 사용하기 위한 패키지이다.

npm install pg --save
yarn add pg

 

mysql을 사용하고 싶다면 mysql을 받으면 된다.

yarn add mysql2

 

코드를 작성하는 최상단 경로에 config를 구성해보자. username과 password 부분은 직접 콘솔에서 접속해보고 맞는 지 체크하자.

import { ConnectionOptions } from "typeorm"

const connectionOptions: ConnectionOptions = {
    type: "postgres",
    host: process.env.DB_ENDPOINT || "localhost",
    port: 5432,
    username: process.env.DB_USERNAME || "root",
    password: process.env.DB_PASSWORD || "",
    database: "uber",
    synchronize: true,
    logging: true,
    entities: [
        "./entities/**/*.*"
    ]
}

export default connectionOptions

// https://github.com/typeorm/typeorm의 ormconfig.json 구성 부분을 참고할 것
// connection option은 공식문서 https://typeorm.io/#/connection-options 에서 확인 가능

 

이제 앱이 실행되는 부분에 typeorm의 createConnection 메서드를 통해 DB와 연결하자. 먼저 앱이 실행되고 DB가 연결되는 것을 막기 위해 DB와 연결된 후 앱이 실행되도록 동기적으로 처리하였다.

import path from "path";
import dotenv from "dotenv";
dotenv.config({path: path.resolve(__dirname, "../.env")}) // import 위치 주의
import { Options } from "graphql-yoga";
import { createConnection } from "typeorm"
import connectionOptions from "./ormConfig";

import app from "./app";

const PORT: number | string | undefined = process.env.PORT;
const PLAYGROUND_ENDPOINT: string = "/playground";
const GRAPHQL_ENDPOINT: string = "/graphql"

const appOptions: Options = {
    port: PORT,
    playground: PLAYGROUND_ENDPOINT,
    endpoint: GRAPHQL_ENDPOINT
}

const handleAppStart = () => console.log(`Server On: http://localhost:${PORT}`)

createConnection(connectionOptions).then(() => {
    console.log("DB Connetion Success")
    app.start(appOptions, handleAppStart)
}).catch((error) => {
    console.log(error)
})

 

앱을 실행하자 DB가 연결되어 쿼리가 날아가는 모습을 볼 수 있다.

이러한 쿼리를 볼 수 있는 이유는 옵션 설정에서 loggin을 켜줬기 때문이다. 개발단계에서는 켜두도록하자.

 

query: START TRANSACTION
query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = current_schema() AND "table_name" = 'typeorm_metadata'
query: COMMIT
Server On: http://localhost:5000

 

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체