Wecode -기업협업 인턴 (부트캠프) 59

soft delete로 short url 삭제 추가 (orm, queryBuilder)

url.service orm 쓰는 방법 찾은 URL 엔터티의 deletedAt 속성을 현재 날짜 및 시간으로 설정합니다. 이것은 소프트 삭제(soft delete)의 일종으로, 실제로 데이터를 삭제하는 대신 삭제 시각을 기록하여 데이터를 보존하는 방식 위에서, 혹시 deletedAt에 해당되는 칼럼을 만들어주지 않은 상태라면 entity 를 통해 만들 수 있다. (나는 mysql로 처음부터 만들었다,, 근데, 아래와 같이 name 을 추가할 수 있길래 name으로 칼럼명을 바꿔서 코드를 쳐보니, sync가 되어 있어서인지 데이터베이스에 연결되어 반영되었다) createQuery Builder로도 가능하다 query builder던 urlEntity 에서 findOne으로 가져온다는건, select한다는거..

기업협업 2번째 프로젝트: 프론트엔드와 통신 시, cors error 해결

Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea docs.nestjs.com 공식문서 참고해서 코드 한 줄이면 된다. app.enableCors(); (Npm 패키지 안에 들어 있을 것이기에. 그렇기..

기업협업 2번째 프로젝트: 추가보완

Exception filter 1. 파일 새로 생성 HttpExceptionFilter 라는 예외 필터를 생성 2. main.ts 파일에서 애플리케이션에 이 필터를 적용 3. 예외를 발생시키는 서비스에서 해당 예외를 던진다 service파일 왜냐하면 여기에서 이렇게 쓰이니까 에러 메세지 -> 확인 controller 성공하면, 에러이면, 왜냐하면 service에서 이렇게 설정했기에 Util -> service에 있는 함수 그대로 빼서, 연결은 import 파일을 만들어서, service에 있는 함수 그대로 복사, export만해주면 된다. 원래 있던 service에는 import query builder던 urlEntity 에서 findOne으로 가져온다는건, select한다는거니까 = orm 쓰는 것...

기업협업 2번째 프로젝트 설명 및 구조화

Util -> 함수 그대로 빼서, 연결은 import 혼자 환경세팅, 데이터베이스 연결, crud, API 한바퀴 도는 거 = 그래야 구조를 아니까 Status code -> 프론트가 그대로 내보내 줄 수도 있고, 메세지를 바꿔서 줄 수도 있고 Http Exception filter를 하면status code별 메세지를 일일이 보내줄 필요 없지 내가 적어준 에러 메세지가, 터미널/postman에 떠야 하는거죠? console.log로 찍어서 확인하거나, postman에 response를 보내니까 찍히지 -> res.error로 내가 코드를 써야 postman에 response를 찍힘 🙌 short Url의 활용 어느 서비스에서나 쓰일 수 있는 url 주소 단축 기능은, 주로 주소 복사 및 공유할 때 쓰입..

기업협업 2번째 프로젝트: short url 통신 성공

api는 urlController. 전체 url.controller body 값은 urlService short url 생성 전에, 확인해야 할 작업이 있다. 에러 핸들링 : user ip 로 하루 30회 short url 변환 가능 횟수 확인 - userIp와 일치하는 거를 가져와라 const today = new Date(); today.setHours(0, 0, 0, 0); if 30회 이상이면, 에러 실제로 에러를 내보면, 아래 postman을 보면, userIp : r234로 30회 이상 만들었기에 아래와 같은 메세지가 뜬다 만약 위 단계를 통과했다면, 이제 create short url 가능 우리는 short url 에 디폴트 값으로 http://localhost:3000/를 도메인 부분으로 ..

기업협업 2번째 프로젝트: '문법' 오답노트

알던 것들도 너무 당연해지니, 잊게 되는 문법들.. 다시 되새기기 위해 기록한다. sql에 넣을 때, $ 쓸거면 백팁으로 해야 한다 또한 다른 경우에도 변수할 때도 마찬가지 `${ 변수 } ` 문법이고, 변수 로만 해도 가능 await가 있으면, async가 없어서 에러가 나는 것 async - await 항상 같이 써야 함수는 따로 빼게 된다면 util에 넣으면 된다 promise 을 한다면 return 을 써줘야 한다. 그러지 않으면 에러 남. orm config -> json dist -> 서버 돌기 위한 직전 build 하면 -> dist 에 자동 돼서 dist는 신경 안 써도 된다 env. 환경 분리 - local - production - stagging -> release 후 배포 전 QA ..

기업협업 2번째 프로젝트- 4일차 shorturl 생성 기능 api 작성 (service 추가,repository)+ 에러 모음

생각해보니, [칼럼에 Unique 제약 조건을 추가] ALTER TABLE dblog ADD CONSTRAINT unique_shortUrl UNIQUE (shortUrl); terminal 말고 dBeaver에서도 바로 수정 가능했다. 각종 오류 모음 TypeScript에서는 늘 타입을 지정해주는지 알았는데, 받아올 때만 형태를 지정해주고, 사용할 때에는 필요 없다. alnum을 alum으로 스펠링 오류 shortUrl을 shrotUrl urlEntity를 UrlEntity ...... 이런 실수들로 에러들이 많이 난다. return을 하지 않아서 난 오류 --> "function generateUniqueShortUrl(length: number): string {에 대해서, 다음과 같은 에러가 떴어..

middleware 미들웨어 언제, 왜, 어떻게 쓰는가

클라이언트로부터 들어온 요청을 각 컨트롤러의 요청 핸들러가 처리하기 이전에 코드를 실행할 수 있는 기능 요청(request) 및 응답(response) 객체에 접근할 수 일반적으로 next()라는 미들웨어 함수 Nest 미들웨어는 기본적으로 Express의 미들웨어와 동일 - 하나의 함수를 통해 구현 - @Injectable() 데코레이터가 있는 클래스로 구현 (NestMiddleware 인터페이스 구현) // logger.middleware.ts; import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; @Injectable() export cla..

Entity와 DTO 언제, 왜 쓰는지 (nestJS, typeorm ...)

Entity와 DTO (Data Transfer Object)는 NestJS에서 데이터를 다룰 때 중요한 개념 DTO (Data Transfer Object): 데이터의 전송 형식을 정의하는 클래스입니다. 주로 API 엔드포인트에서 클라이언트로 데이터를 전송할 때 사용됩니다. 클라이언트와 서버 간의 데이터 전달을 위해 DTO를 사용하여 데이터의 형태와 필드를 정의하고 검증할 수 있습니다. DTO를 사용하면 클라이언트로 보낼 데이터를 필터링하거나 데이터 유효성 검사를 수행할 수 있습니다. //dto export class CreateUserDto { name: string; email: string; } DTO 왜 쓰는 지 Data Transfer Object 데이터를 우리가 사용할 수 있게 객체로 바꿔줌..

쿼리 빌더 Query Builder 왜, 언제, 어떻게 쓰는가

Query Builder 왜 쓰는가 대규모 데이터 세트를 관리하고 쿼리하는 것은 어려울 수. 기존의 SQL 쿼리는 복잡하고 시간이 오래 걸리므로 필요한 정보를 즉시 추출하기가 어렵다. --> Query Builder 데이터베이스 생성 및 관리를 단순화하여 작업에 집중할 수 있도록 . 워크플로를 간소화 Query Builder 언제 쓰는가 쿼리 빌더는 typerom을 사용할 때 사용 Query Builder 어떻게 쓰는가 SQL 코드를 작성하는 대신 시각적 인터페이스를 사용 오픈 소스 SQL 쿼리 빌더: MySQL Workbench, DBeaver 및 pgAdmin SQL 쿼리 빌더를 사용하여 CSV 또는 Excel 파일과 같은 다양한 파일 형식에서 데이터베이스로 데이터를 가져올 수 Update using..