본문 바로가기

분류 전체보기

(285)
must be a number conforming to the specified constraints params.ts에 담아뒀던 파일(dto도 가능)에 다음과 같이 정의를 했었다. 해결 전 export class CompanyRequestParams extends CollectionAddressOrSlugParams { @IsNumber() @IsOptional() readonly tokenId: number; ... } Run을 해보니 must be a number conforming to the specified constraints 라는 400 에러가 떴다. number Type에 대해 뭔가 문제가 있는걸까 싶어서 구글링을 해보니 type 변환의 문제였으며 @Type 데코레이터로 Number로 type을 변환해줘야 했다. 해결 후 export class CompanyRequestParams ext..
sort 쿼리 날릴때 정렬 createdAt(생성시점)을 기준으로 ASC(오름차순 정렬)을 하려면 아래와 같이 postman에서 설정하면 된다.
keyof와 typeof 파일을 둘러보다보니, 다음과 같은 코드가 있었다. export const ActivityType = { ... } as const; export type ActivityType = (typeof ActivityType)[keyof typeof ActivityType]; 도대체 typeof와 keyof가 무엇이냐 말이다! 결론적으론, ActivityType 내부에 쓰여진 항목들을 다른 파일에서 import 해와서 잘 쓸 수 있다는 것. 일단 정의를 보자면, typeof : 객체 데이터를 객체 타입으로 변환해주는 연산자 객체는, 객체 자체를 type으로 쓸 수 없는데 객체에 쓰인 type 구조를 그대로 가져와 독립된 타입으로 만들어 사용하고 싶을때 사용한다 * class는 class 자체가 객체 type이 ..
다른 api 호출해오는법 (feat. httpService) 내가 작성한 api가 다른 곳에서 작성된 api를 필요로 할 때가 있다. 그때 바로 사용할 수 있는 것이 httpService이다. import { HttpService } from 'nestjs/axios'; nestjs의 axios 라이브러리에 HttpService가 존재한다. 이를 사용하기 위해서는 constructor에 아래와 같이 주입을 해주어야 한다 private readonly httpService: HttpService, 대체적으로, 이런 형태를 띈다. const 변수명 = await firstValueFrom(this.httpService.get(`${this.configService.get('url의 제일 루트 디렉토리 경로')}/해당 url의 디렉토리 경로/api 이름`)); firs..
Everything up-to-date 상황) 나는 feature/champion-admin에서 작업을 했고, 작업한 내용을 origin/champion-admin 원격 브랜치에 push를 하려고 했었다. 그래서 git에서 다음과 같이 진행하였다. 1) feature/champion-admin으로 checkout하기 git checkout feature/champion-admin 2) 원격 브랜치로 push 하기 git push origin feature/champion-admin 2)번까지 하면 계속 터미널에서 Everything up-to-date 라는 문구가 뜨며, 이는 원격 브랜치와 로컬 브랜치 간에 아무런 변경 사항이 없다는 것이었다. 추가적으로, 두 브랜치 간의 차이점이 따로 있는건가 해서 git log를 이용해 push된 내용을 ..
일급 컬렉션이란? 객체지향에서 알아두어야 할 것이 '일급 컬렉션(First Class Collection)'이었다. 나는 왜 몰랐던 것인가.. 아래와 같은 코드가 있다고 보자. Map map = new HashMap(); map.put("1", "A"); map.put("2","B"); map.put("3","C"); map에 3개의 값을 wrapping 하는 것이 일급 컬렉션이다. public class HelloWorld { private Map hi; public HelloWorld(Map hi) { this.hi = hi; } } collection을 wrapping 하면서, 그 외 다른 멤버변수가 없는 상태를 일급 컬렉션이라고 한다. 즉, Collection을 wrapping 하면서 + 멤버변수가 하나밖에 없다는..
user-agent란? 정의 - 사용자를 대신하여 일을 수행하는 SW의 식별 정보 - 주로 웹브라우저를 뜻함 웹브라우저만 해도 chrome, firefox, safari 등 수없이 많고 운영체제 OS도 Window,Mac,Android 등 굉장히 많다. 또 여기서 각각에 해당하는 version도 있다. 바로 이들을 식별하기 위해 탄생한 것이 user-agent이다. 웹 페이지에 접속할 때 각 플랫폼에 맞는 페이지(ex. mobile or PC)로 가기 위해서는 정보가 필요하기 때문이다. 즉, user-agent는 사용자의 웹 브라우저와 기기 정보를 담고 있다. 인터넷 브라우저 동작 과정 - 내 컴퓨터/디바이스에서 접속하려는 사이트의 URL 입력 - URL이 어떤 국가의 서버로 연결되어야 하는지, IP주소를 알아온다. - 확인된..
QueryFailedError: relation DB이름 does not exist api를 실행하던 중에 ERROR [LoggingInterceptor] QueryFailedError: relation "champion-admin" does not exist 라는 에러가 발생하였다.  처음에는 relation이 존재하지 않는다? 나 이 테이블에 relation 설정한 적 없는데 하며 의아하던 중 다음과 같은 점들을 발견할 수 있었다. 1) PostgreSQL에 테이블만 만들어놓고 안에 컬럼이 없음 2) entity.ts 파일에서 @Entity('champion-admin')으로 되어있었고, table 이름은 championship_admin으로 되어있었음. 그래서 각각에 대해 1) 테이블 안에 컬럼 추가 2) entity.ts 파일 -> @Entity('champion_admin')..
param과 query의 차이점 REST API를 작성하면서 해당 메서드에 @Param과 @Query는 빠질 수 없는 요소다. async hello(@Param or @Query) 이런 식으로 종종 쓰는데 둘은 어떤 차이가 있을까? Param - parameter의 줄임말. 함수나 메서드에 전달되는 값이나 변수를 나타낸다 - 웹개발에서는 URL의 일부로 파라미터를 전달하는 경우가 있음. 경로 내에 포함되어 있음 https://example.com/user?id=123 위에서는 id가 파라미터이다. Query - DB에서 정보를 검색하거나 필터링하기 위해 사용되는 매개변수나 조건을 나타낸다. - DB 질의(query)를 수행할때 사용 - 웹개발에서는 URL의 일부로 쿼리 문자열을 전달하는 경우가 많다. 쿼리 문자열은 일반적으로 ? 로 시..
toWei()와 GWei()의 차이점 web3 utils 안에 들어있는 여러 라이브러리들을 보던 중에 toWei()와 GWei()를 보았다. 대충 이더리움과 관련된 무언가의 라이브러리이겠거니..? 하고 추측만 하고 정확하게 무슨 의미인지 다시 찾아보았다. 일단, 이더리움에서 sigendTx에 필요한 TransactionConfig의 요소로는 다음과 같다. export interface TransactionConfig { from?: string | number; to?: string; value?: number | string | BN; gas?: number | string; gasPrice:?: number | string | BN; maxPriorityFeePerGas?: number | string | BN; maxFeePerGas?..