프로그래밍(Web)

    [바미] node.js에서 aws s3 스토리지에 이미지 저장하기

    node.js에서 aws s3 스토리지에 이미지 저장하기 AWS에서 제공하는 S3 스토리지는 다양한 파일을 bucket에 보관할 수 있다. 자세한 내용은 생활코딩 강의 참고하면 좋다. 그럼 우선 aws sdk를 설치하여야 한다. npm i aws-sdk --save 그리고 AWS IAM에서 생성한 사용자가 있어야 한다. 사용자는 S3에 대한 권한을 가지고 있어야 한다. 사용자를 생성하고 권한을 부여하는 기능은 어렵지 않기때문에 검색해서 적용하면 된다. 그리고 해당 사용자를 생성하면 csv 파일로 secretkey를 받을 수 있다. 이를 AWS S3에 접근하여 사용하기 위해서 사용된다. 기본 정보가 담긴 config.json 생성 우선 부여 받은 사용자 accessKeyId와 secretAccessKey ..

    [바미] Typescript와 AWS Lambda로 모니터링에 유용한 API 패턴 구성하기

    람다를 크게 세 부분으로 나눕니다. 사용자로부터 받은 데이터를 검증해주는 컨트롤러 비즈니스로직을 구성하는 서비스 API나 데이터베이스와 연결되는 레파지토리 그럼 상품을 구매하는 Shop 예제를 통해 차근차근 보겠습니다. Shop예제 shop.ts const repo: ShopRepository = new ShopRepository(); const service: ShopService = new ShopService(repo); const controller: ShopController = new ShopController(service); export const purchaseItem = controller.purchaseItem 위 이미지처럼 컨트롤러는 생성자로 서비스를, 서비스는 생성자로 레파지토리를..

    [바미] AWS Cloud9 개발 환경에서 TypeScript를 사용하기.

    이 샘플은 AWS Cloud9 개발 환경에서 TypeScript를 사용하는 방법을 보여줍니다. 이 샘플을 생성하면 AWS 계정에 요금이 부과 될 수 있습니다. 여기에는 Amazon EC2 및 Amazon S3와 같은 서비스에 대한 가능한 요금이 포함됩니다. 자세한 내용은 Amazon EC2 요금을 참조하십시오. 및 Amazon S3 요금. 목차 전제 조건 1 단계 : 필요한 도구 설치 2 단계 : 코드 추가 3 단계 : 코드 실행 4 단계 : Node.js에서 AWS SDK for JavaScript 설치 및 구성 5 단계 : AWS SDK 코드 추가 6 단계 : AWS SDK 코드 실행 7 단계 : 정리 전제 조건 이 샘플을 사용하기 전에 다음 요구 사항을 충족해야합니다. 기존 AWS Cloud9 EC..

    [바미] typeorm에 대해 알아보자!

    참고사이트 TypeOrm (object Relational Mapping) TypeORM 에서 ORM 기본, NativeScript, 박람회 및 전자 플랫폼 반응, NodeJS, 브라우저, 코르도바, 폰갭, 이온 성에서 실행할 수 있으며, 타이프 라이터와 자바 스크립트 (ES5, ES6, ES7, ES8)와 함께 사용할 수 있습니다. 이 솔루션의 목표는 항상 최신 JavaScript 기능을 지원하고 몇 가지 테이블이있는 소규모 응용 프로그램부터 여러 데이터베이스가있는 대규모 엔터프라이즈 응용 프로그램에 이르기까지 데이터베이스를 사용하는 모든 종류의 응용 프로그램을 개발하는 데 도움이되는 추가 기능을 제공하는 것입니다. ORM 이란? Object Relational Mapping, 객체-관계 매핑 객체와 ..

    [바미] Typescript-restful-starter - Plan 부분 실행.

    수정 사항. 여기 Plan부분 시행. name외에도 age, phonenumber와 같은 데이터를 추가 할 수 있도록 수정. 기존 데이터에서 1번에서 추가한 컬럼 값들을 넣지 않은 데이터들이 Update될 수 있도록 수정. Create로 생성된 데이터 중 입력한 이름을 가진 데이터, 입력한 나이를 가진 데이터, 입력한 전화번호를 가진 데이터, 등을 검색하여 조회 할 수 있도록 수정. 코드 Sample.controller.ts // select -> routes/Sample.route.ts 참조. public async find5(): Promise { const { age } = this.req.params as unknown as { age: number }; const sample = await th..

    [바미] Typescript-restful-starter - DB 컬럼 중 'name'값을 추가하여 id, text, email외에도 name값을 추가 할 수 있도록 수정해보자!

    수정사항 DB 컬럼 중 'name'값을 추가하여 id, text, email외에도 name값을 추가 할 수 있도록 수정. 변경 전 Sample.controller.ts // input -> routes/Sample.route.ts 참조. public async create(): Promise { 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); }..

    [바미] Typescript-restful-starter - Update 될 때 텍스트뿐만 아니라 이메일도 수정 할 수 있게 변경하기!

    코드 수정 전 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.schemas.ts import { num..

    [바미] Typescript-restful-starter - services에 있는 코드와 repository에 있는 코드의 차이점에 대해 알아보자.

    이 부분에 대해 궁금하여 물어본 내용을 답변을 받아 적었습니다. Sample.repository.ts import { EntityRepository, Repository } from "typeorm"; import { Sample } from "../models"; @EntityRepository(Sample) export class SampleRepository extends Repository { public bulkCreate(Samples: Sample[]): Promise { return this.manager.createQueryBuilder().insert().into(Sample).values(Samples).execute(); } public async removeById(id: numb..

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

    코드 수정 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().requir..