TIL 41일차 (20240222)

박세연·2024년 2월 22일

TIL

목록 보기
35/70

오늘 한 일

  • prisma를 Typeorm으로 변환
  • 3계층 아키텍처 다시 설정

오늘 마주한 에러

업로드중..
오늘도 마주했다. undefined
도무지 못찾아서 튜터님께 문의를 드렸다. 알고보니 맞게 작동했던 것... 자세히 쓰자면
회원가입 때 작성한 이메일이 이미 존재하는 이메일 정보인지 확인할 때 findUserById 메서드를 사용했는데, 당연히 새로 만든 이메일이므로 undefined가 도출되었던 것... controller에서 확인했는데 이 부분을 service로 넘기고 controller에서 유무 확인을 지웠더니 무사히 작동되었다!


에러는 아니고 CJS를 ESM으로 변환했다. 이 과정도 조금 어려워서 기록으로 남긴다.

🚩 index.js

import typeorm from "typeorm";
import ResumeEntity from './entity/resume.entity.js'
import UserEntity from './entity/user.entity.js'
import dotenv from 'dotenv';

dotenv.config();

const dataSource = new typeorm.DataSource({
    type: "mysql",
    host:process.env.DATABASE_HOST,
    port:process.env.DATABASE_PORT,
    username:process.env.DATABASE_USERNAME,
    password:process.env.DATABASE_PASSWORD,
    database:process.env.DATABASE_NAME,
    synchronize: false,
    entities:[ResumeEntity, UserEntity]
})

dataSource.initialize()

export default dataSource;

🚩 user.entity.js

import {EntitySchema} from "typeorm";

export default new EntitySchema({
    name: "Users",
    tableName: "Users",
    columns: {
        userId: {
            primary: true,
            type: "int",
            generated: true,
        },
        email: {
            type: "varchar",
        },
        password: {
            type: "varchar",
        },
        name: {
            type: "varchar",
        },
        createdAt: {
            type: "datetime",
        },
    },
})

🚩 resume.entity.js

import { EntitySchema } from "typeorm";

export default new EntitySchema({
    name: "Resumes",
    tableName: "Resumes",
    columns: {
        resumeId: {
            primary: true,
            type: "int",
            generated: true,
        },
        userId: {
            type: "int",
        },
        name: {
            type: "varchar",
        },
        title: {
            type: "varchar",
        },
        content: {
            type: "text",
        },
        status: {
            type: "varchar",
        },
        createdAt: {
            type: "datetime",
        },
    },
    relations: {
        users: {
            target: "Users",
            type: "many-to-one",
            joinTable: true,
            joinColumn: { name: 'userId' },
            cascade: true
        }
    }
})

그리고 repository.js 파일들에

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

을 추가한다.

profile
배워나가는 중

0개의 댓글