티스토리 뷰

타입오알엠은 타입스크립트에 보통 사용을 한다.

타입오알엠은 이름과 타입을 지정해주어 데이터베이스와 연동하는것인데

자바스크립트 즉 NODE환경에서도 사용할수 있도록 해본다.

 

검색법 : typeorm javascript

 

적용하기

환경 : yarn 패키지와 ES6모듈을 사용합니다.

 

1. 모듈 설치

// TypeORM과 사용할 RDB설치
yarn add typeorm
yarn add mysql

 

2. 폴더 설정

위 검색어로 검색을 했을 때 나오는 페이지의 환경을 따라갑니다.

 

3.  파일 설정

// index.js
import typeorm from "typeorm";
import dotenv from "dotenv";
import entityResume from "./entity/resume.entity.js";
import entityUser from "./entity/user.entity.js";
dotenv.config();

const dataSource = new typeorm.DataSource({
  type: "mysql",
  host: process.env.HOST, // 연결할 sql 호스트
  port: process.env.PORT, // 연결할 sql 포트번호
  username: process.env.USERNAME, // 연결할 sql 이름
  password: process.env.PASSWORD, // 연결할 sql 비밀번호
  database: process.env.DATABASE, // 연결할 sql 데이터베이스
  synchronize: false, // 엔티티파일을 데이터베이스에 동기화를 하지않는다는 설정, 동기화를 한다면 실서버에 바로 적용될 위험성 있음
  entities: [entityResume, entityUser],
});

// typeorm 초기화
dataSource.initialize();

export default dataSource;

 

// user.entity.js

import typeorm from "typeorm";

const EntitySchema = typeorm.EntitySchema;

export default new EntitySchema({
  name: "users", //참조할 테이블이름
  tableName: "users", // 실제 테이블이름
  columns: {
    id: {
      primary: true,
      type: "int",
      generated: true,
    },
    email: {
      type: "varchar",
    },
    password: {
      type: "varchar",
    },
    userName: {
      type: "varchar",
    },
    role: {
      type: "varchar",
      enum: ["USER", "ADMIN"],
      default: "USER",
    },
    token: {
      type: "varchar",
      nullable: true,
    },
  },
});

 

// resume.entity.js

import typeorm from "typeorm";

const EntitySchema = typeorm.EntitySchema;

export default new EntitySchema({
  name: "resumes", //참조할 테이블이름
  tableName: "resumes", // 실제 테이블이름
  columns: {
    id: {
      primary: true,
      type: "int",
      generated: true,
    },
    user_id: {
      type: "int",
    },
    title: {
      type: "varchar",
    },
    context: {
      type: "varchar",
    },
    status: {
      type: "varchar",
      enum: ["APPLY", "DROP", "PASS", "INTERVIEW1", "INTERVIEW2", "FINAL_PASS"],
      default: "APPLY",
    },
    createdAt: {
      type: "datetime",
    },
    updatedAt: {
      type: "datetime",
    },
  },

  relations: {
    users: {
      target: "users", // 참조할 테이블 이름
      type: "many-to-one", // 관계설정 (n:1)
      joinColumn: { name: "id" },
      joinTable: true,
      cascade: true,
    },
  },
});

 

4.사용하기

데이터를 가져오는 공간 (repository경로)로 가서 호출을 한뒤 사용합니다.

import dataSource from "../typeorm/index.js";

  getResumeById = async (resumeId) => {
    const detailResume = await dataSource.getRepository("resumes").findOne({
      where: {
        id: +resumeId,
      },
      select: {
        id: true,
        title: true,
        context: true,
        user_id: true,
        users: {
          select: {
            userName: true,
          },
        },
        status: true,
        createdAt: true,
      },
    });
    return detailResume;
  };

 

잘 나온다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/06   »
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
글 보관함