프로그래밍(Web)/Javascript(TS,Node)
[바미] Typescript-restful-starter - DB 컬럼 중 'name'값을 추가하여 id, text, email외에도 name값을 추가 할 수 있도록 수정해보자!
Bami
2020. 12. 24. 18:32
728x90
반응형
수정사항
DB 컬럼 중 'name'값을 추가하여 id, text, email외에도 name값을 추가 할 수 있도록 수정.
변경 전
Sample.controller.ts
// input -> routes/Sample.route.ts 참조.
public async create(): Promise<Response> {
const { text, email} = this.req.body as { text: string, email: string};
this.sample.text = text;
this.sample.email = email;
try {
const result = await this.sampleService.save(this.sample);
return this.res.status(200).send(result);
} catch (ex) {
return this.res.status(404).send({ text: "ERROR" });
}
}
Sample.model.ts
import { IsEmail } from "class-validator";
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity("sample")
export class Sample extends BaseEntity {
@PrimaryGeneratedColumn() // 인덱스 자동 증가.
public id: number;
@Column("text")
public text: string;
@Column("text")
public name: string;
@Column("text")
@IsEmail()
public email: string;
}
Sample.schemas.ts
import { number, object, string } from "joi";
/* 구조 정의 */
export const createSample = object().keys({
text: string().required(),
email: string().required(),
});
export const updateSample = object().keys({
id: number().required(),
text: string().required(),
email: string().required(),
});
export const deleteSample = object().keys({
id: number().required(),
});
}
변경 후
Sample.controller.ts
// input -> routes/Sample.route.ts 참조.
public async create(): Promise<Response> {
const { text, email,name } = this.req.body as { text: string, email: string, name: string };
this.sample.text = text;
this.sample.email = email;
this.sample.name = name; // name 값 추가.
// this.sample.email = "someone@somewhere.com";
try {
const result = await this.sampleService.save(this.sample);
return this.res.status(200).send(result);
} catch (ex) {
return this.res.status(404).send({ text: "ERROR" });
}
}
Sample.model.ts
import { IsEmail } from "class-validator";
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity("sample")
export class Sample extends BaseEntity {
@PrimaryGeneratedColumn() // 인덱스 자동 증가.
public id: number;
@Column("text")
public text: string;
@Column("text")
public name: string; // name 값 추가
@Column("text")
@IsEmail()
public email: string;
}
Sample.schemas.ts
import { number, object, string } from "joi";
/* 구조 정의 */
export const createSample = object().keys({
text: string().required(),
email: string().required(),
name: string().required(), // name 값 추가
});
export const updateSample = object().keys({
id: number().required(),
text: string().required(),
email: string().required(),
});
export const deleteSample = object().keys({
id: number().required(),
});
}
Tester
Web
- 기존 데이터는 name값을 넣지 않았으므로 null값이 되는 것을 확인 할 수 있다.
Plan
1. name외에도 age, phonenumber와 같은 데이터를 추가 할 수 있도록 수정 예정.
2. 기존 데이터에서 1번에서 추가한 컬럼 값들을 넣지 않은 데이터들이 Update될 수 있도록 수정 예정.
3. Create로 생성된 데이터 중 입력한 이름을 가진 데이터, 입력한 나이를 가진 데이터, 입력한 전화번호를 가진 데이터, 등을
검색하여 조회 할 수 있도록 수정 예정.
728x90
반응형