티스토리 뷰
타입오알엠은 타입스크립트에 보통 사용을 한다.
타입오알엠은 이름과 타입을 지정해주어 데이터베이스와 연동하는것인데
자바스크립트 즉 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;
};
잘 나온다.
'프로그래밍 기초 > Node.js' 카테고리의 다른 글
Nodemailer(노드메일러) 사용하기 (0) | 2024.03.11 |
---|---|
Jest로 테스트 코드 작성 하기 (0) | 2024.03.11 |
pm2 프로세스 적용하기 (0) | 2024.02.28 |
AWS S3를 사용하여 이미지 업로드 기능 구현하기 (0) | 2024.02.22 |
NODE의 Bcrypt [패스워드 안전하게 저장] (0) | 2024.02.15 |