
오늘도 마주했다. undefined
도무지 못찾아서 튜터님께 문의를 드렸다. 알고보니 맞게 작동했던 것... 자세히 쓰자면
회원가입 때 작성한 이메일이 이미 존재하는 이메일 정보인지 확인할 때 findUserById 메서드를 사용했는데, 당연히 새로 만든 이메일이므로 undefined가 도출되었던 것... controller에서 확인했는데 이 부분을 service로 넘기고 controller에서 유무 확인을 지웠더니 무사히 작동되었다!
에러는 아니고 CJS를 ESM으로 변환했다. 이 과정도 조금 어려워서 기록으로 남긴다.
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;
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",
},
},
})
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';
을 추가한다.