프로그래밍(Web)/Javascript(TS,Node)

[바미] Typescript-restful-starter - 이메일을 json데이터에 입력하여 생성하기

Bami 2020. 12. 22. 17:19
728x90
반응형
  • 코드 수정

    • Create 될 때 정적으로 이메일 데이터를 받는 것을 동적으로 이메일을 json데이터에 입력하여 생성할 수 있도록 수정함.
  • 코드 수정 전

Sample.schemas.ts

import { number, object, string } from "joi";

/* 구조 정의 */ 
export const createSample = object().keys({
    text: string().required(),
});

export const updateSample = object().keys({
    id: number().required(),
    text: string().required(), 
});

export const deleteSample = object().keys({
    id: number().required(),
});

Sample.service.ts

// input -> routes/Sample.route.ts 참조. 
public async create(): Promise<Response> {
    const { text } = this.req.body as { text: string };    
     this.sample.text = text;
     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.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(),
});

export const deleteSample = object().keys({
    id: number().required(),
});

Sample.service.ts

 // input -> routes/Sample.route.ts 참조. 
    public async create(): Promise<Response> {
        // const { text } = this.req.body as { text: string }; -> 기존 코드

        // Sample.schemas.ts에서 따로 email의 입력 받는 틀을 잡아주면 아래의 코드를 사용할 수 있다.
        const { text, email } = this.req.body as { text: string, email: string }; // 이 부분 수정
        this.sample.text = text;
        this.sample.email = email; // 이 부분 수정

        // 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" });
        }
    }

출력화면

Tester

Web

728x90
반응형