본문 바로가기
반응형

타입스크립트15

[NestJS] TypeError: Do not know how to serialize a BigInt 문제 해결 개발을 진행하던 도중 만난 에러. 이 api를 호출했을 때 에러도 뱉어내지 않고 계속해서 응답이 오지 않는 상황이 벌어졌다. 서비스 단에서의 문제인가 봤더니 문제가 없었고 리턴 값에 console.log를 찍어봐도 잘 나오는데 리턴만 안됐다. gpt한테 바로 물어보니... 라길래 바로 json으로 강제로 직렬해보았다. 그랬더니 발생한 에러 TypeError: Do not know how to serialize a BigInt 이는 응답 데이터를 Nestjs에서는 JSON.stringify()로 직렬화할 때 BigInt 타입이 포함되어 있으면 발생하는 에러이다. 데이터가 많아질 거 같아 한 테이블의 pk 타입을 bigint로 설정했더니 이런 문제가 발생한 것이였다. 가장 안전하고 간단한 방법은 모든 Bi.. 2025. 5. 29.
[자료구조] Stack Stack Data StructureA stack is a linear data structure that follows the principle of Last In First Out (LIFO).This means the last element inserted inside the stack is removed first.You chan think of the stack data struccture as the pile of plates on top of another.  Here, you can:Put a new plate on top.Remove the top plate.And, if you want the plate at the bottom, you must first remove all the p.. 2024. 6. 18.
[js] forEach와 비동기 작업(Transaction API error: Transaction already closed: Could not perform operation 발생!) 외주 작업을 하던 도중에  Transaction API error: Transaction already closed: Could not perform operation 라는 에러를 만났다. 해당 코드는 다음과 같은데  await this.prisma.$transaction(async (tx) => { const maxCombineNum = await tx.order.aggregate({ ... }); //원하는 데이터에서 +1 let newCombineNum = maxCombineNum._max.combineNum + 1; //위에 newCombineNum.. 2024. 5. 31.
[TypeScript] Bcrypt를 이용한 비밀번호 해쉬화(암호화) 회원가입을 할 때 데이터베이스에 비밀번호 같이 보안에 민감한 정보를 그냥 저장하면 안되고 암호화해서 저장하는게 안전하다. node.js에서는 주로 Bcrypt를 사용해서 비밀번호 해쉬화를 해 저장한다. 해쉬화는 단방향으로 해쉬 알고리즘을 이용하여 비밀번호를 암호화시키며 당연히 단방향이라 복구는 불가능하다. 다시 말하면 한쪽 방향으로만 암호화를 하는 단방향 암호화이기 때문에 암호화는 가능하지만 복호화는 불가능하다. 기존 해시 함수에서는 무차별 대입 공격(고성능 GPU를 이용해 무차별적으로 해시함수를 대입해 같은 digest를 찾는 공격)에 취약했는데 bcrypt는 salting 방식을 통합하여 취약점을 보완했다. 임의의 salt 값을 덧붙여 hash 함수를 진행하기 때문에 같은 비밀번호여도 다른 diges.. 2023. 12. 15.
반응형