개발일지

TypeORM?

개발자 백구 블로그 2023. 10. 30. 18:12

TypeORM?
node. js에서 실행되고 Typescript로 작성된 객체 관계형 매퍼 라이브러리다.

typeORM은 MySQL, PostgreSQL, MariaDB,SQLite, MS SQL Server, Oracle, SAP Hana 및 WebSQL과 같은 여러 데이터베이스를 지원한다.



TypeORM 특징
모델을 기반으로 데이터베이스 테이블 체계를 자동으로 생성한다.
데이터베이스에서 개체를 쉽게 삽입, 업데이트 및 삭제 할 수 있다.
테이블 간의 매핑(일대일, 일대 다 및 다 대다)을 만듭니다.
간단한 CLI 명령을 제공한다.

 

 

TypeORM 이점
간단한 코딩으로 ORM 프레임 워크를 사용하기 쉽다.
다른 모듈과 쉽게 통합된다.

 

먼저 파일을 만들어주고 터미널에서 npm init을 해준다.

 

그다음으로, "npx tsc --init" 커맨드로 tsconfig.json 파일을 생성한다.

그러나 아래의 사진처럼 npm install typescript를 먼저 해주고 추가로 해라라고 쓰여 있어서 

먼저 그렇게 하고 후에 다시 "npx tsc --init"를 하니 설치가 되었다.

 

 

 

필요한 모듈을 설치하기 위해,

npm install morgan nodemon express

npm install typescript ts-node @types/node @types/express @types/morgan-save-dev

를 해준다.

 

morgan NODE.JS에서 사용되는 로그 관리를 위한 미들웨어다.
nodemon 서버 코드를 변경 할 때마다 서버를 재시작하여 일을 자동으로 대신 해준다. 
 ts-node NODE.JS 상에서 TYPESCRIPT Compiler를 통하지 않고도, 직접 typescript를 실행시키는 역할을 한다.
@types/node @types/express express 및 NODE.JS에 대한 Type 정의에 도움이 된다

 

 

import express from 'express';
import morgan from 'morgan'

const app = express();

app.use(express.json());
app.use(morgan('dev'));

app.get('/',(req,res)=>{
    res.send('running')
})

const port = 4000;
app.listen(port, () => {
    console.log(`Server Running at http://localhost:${port}`);

})

 

음... 그런데 사실 이러면 오류가 발생한다.

원래는 자바스크립트 파일로 컴파일 해준 다음에 실행을 해주면 되지만 이는 사실 번거롭기 때문에 ts-node를 이용해준다.

 

 

그래서 package.json에서 scripts 부분에 dev를 추가해준 다음, 이를 입력하면 오류는 해결된다.

 

"scripts": {
    "dev":"nodemon --exec ts-node ./src/index.ts ",

 

express 앱에 typeorm을 이용한 데이터베이스 연결을 위해

필요한 모듈을 추가적으로 입력해준다.

 

npm install pg typeorm reflect-metadata

 

참고로, pg:PostgreSQL 데이터베이스와 인터페이스를 하기 위한 nodejs 모듈 모음이다. 데이터 베이스 드라이버! 이다.
이때, 인터페이스란? 일련의 명령어나 함수,옵션, 그리고 프로그램 언어에 의해 제공되는 명령어나 데이터를 표현하기 위한 다른 방법들로 구성되는 프로그래밍이다.

typeorm: TypeScript 및 javascript와 함께 사용할 수 있는 node js에서 실행되는 ORM이다.
reflect- metadata : 데코레이터를 사용하기 위해서 필요한 모듈이다.

 

또, npx typeorm을 init 해주고 성공적으로 되었다고 뜬다.

 

 

 

 

 

그럼 위 사진처럼 파일과 폴더들이 생성된다.

 

백엔드 실행시 데이터베이스 연결해준다.

 

AppDataSource
    .initialize()
    .then(() => {
        console.log('성공');
    })
    .catch((err) => {
        console.error(err)
    })

 

그리고 npm run dev 한다....

 

엇?? 이런 오류가 생긴다???

 

 

 

Postgres 데이터베이스가 실행되어있지 않은데 typeorm을 이용해서 연결을 하려 했기 때문에 에러가 난다고 한다.

그래서 해결방법은 도커를 이용하거나 Postgres 데이터베이스를 설치해주어야 한다...