이미 수행기간이 끝난 프로젝트이지만, 선택항목 중 하나이자, 수행기간 때는 못했던 기능을 도전해보려고 한다. 외부 OpenAPI를 이용해서 게시글을 업로드한 시점의 날씨 정보를 포함하는 기능을 추가하여 고도화하기로 했다. 외부 API를 활용하기 위해 URL을 Fetching하거나 Parsing 하려면 Axios를 사용해야된다. 그러면 Axios가 무엇인지 소개를 하며 고민과 문제해결과정을 포스팅하고자한다. (물론 Javascript에 fetch함수도 있다!) Axios 란? - axios 정의 Axios는 브라우저, Node.js 를 위한 Promise API를 활용하는 HTTP 비동기통신 라이브러리 이다. 프레임워크에서 ajax를 구현할 때 axios를 쓰는 편이다. Axios는 운영환경에 따라 브라우..
목표사항 상품검색 mysql like 처럼 상품명 전부 입력하지 않는다하더라도 일부만 입력한 일부를 입력하면 일부라도 갖고있다면 검색결과에 나오도록 구현하는 것을 목표로했다. 국가별 검색/ 카테고리 검색 국가와 카테고리 검색은 옵션이다. 최신순 - 상품을 등록한 날짜가 최신일수록 가장 먼저 나오도록 구현하는 것을 목표로 했다. - 꼭 query에 넣지 않아도 최신순 검색을 기본으로 하고 있다. 주문날짜순 - 상품의 주문마감일이 현재와 가까울 수록 가장 먼저나오도록 구현하는 것을 목표로 했다. - 단, 주문마감일은 지나지 않은 데이터만을 나타내도록 했다. typeORM은 검색이 쉬우나, 몽고디비에서는 생각보다 쉽지 않았다. 검색하려는 상품명이 null 일 수 있고 마찬가지로 주문날짜순, 국가별검색, 카테고..
[ ERD Diagram ] TypeORM과 다르게 Mongoose 에서는 어떻게 외래키를 표현할까 궁금해서 기록하게 되었다. 특히 마켓 모델 을 구현 해야되는데, 다른 모델의 PK(Primary Key)를 참조해야되는 컬럼이 존재할 때 어떻게 코드를 작성해야될지 몰랐다. 그래서 공식다큐먼트를 읽기로했다 :) [참고] 공식 다큐먼트들 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 combi..
이전과 다르게 프로젝트 세팅 과정 마저도 삐그덕삐그덕 순탄했으면 좋으련만 오늘도 순탄치 않다. 여러분도 순탄치않은 상황이 발견했을 때 미약한 도움이 되고자 (아무도 보지 않더라도) 계속 에러가 발생할때마다 어떻게 해결했는지 과정을 공유하려고한다 :) [필자 환경 사양 ] - Node.js version: v16.16.0 - OS: MacOS NestJS 공식문서 보면서 순서대로 진행한건데 프로젝트 생성하다가 전에는 없던 에러가 떴다. $ npm i -g @nestjs/cli -g 옵션을 지우고 시도를 했더니 위와 같은 패키지 설치 에러없이 동작이 되었다. $ npm i @nestjs/cli 그런데... NestJS cli 로 프로젝트를 생성하다가 command not found: nest 라는 에러가 떴..
몽고디비에서 필드의 존재여부에 따라 상황별 쿼리문 어떻게 만들지? 오랜만에 mongoose와 mongodb 옵션을 활용해보니 다시 어색하고 가물가물했다. nosql의 단점은 sql에 비해 쿼리문이 복잡하다. 그만큼 다큐먼트에 있는 옵션들을 활용할 수록 원하는 데이터를 뽑아내기도하고 관리할 수 있다. 아래코드와 같이, typeorm은 분기를 하여 상황별로 쿼리문을 추가할 수 있다. const query = somehow .createQueryBuilder('users') .where(`user.deletedAt IS NOT NULL`) if (params.hasImage) { query.andWhere(`user.image IS NOT NULL`) } if (params.q != '') { query.an..
RDBMS 와 다르게 몽고디비는 JOIN을 할 수 없을까? populate 가 뭐지? 몽고디비에서의 JOIN과 같은건가? 몽고디비(Document based NoSQL) 에서는 SQL의 JOIN 와 똑같은 기능이 없어도 다른 콜렉션의 다큐먼트 데이터를 불러서 사용해야되는 상황이 필요하기에 유사한 기능은 존재한다. NodeJS 환경에서는 Mongoose를 사용하게되는데 Mongoose는 populate() 라는 함수가 그렇다. Mongoose 다큐먼트를 읽어보고 이해하는 것을 추천한다. Mongoose v6.7.2: Query Population MongoDB has the join-like $lookup aggregation operator in versions >= 3.2. Mongoose has a ..
deletedAt 값을 삭제날짜로 하여 soft-delete 방식으로 데이터를 삭제하려는데 다음과 같은 에러를 발생했다. ERROR [ExceptionsHandler] Cast to date failed for value "[Function: now]" (type function) at path "deletedAt" CastError: Cast to date failed for value "[Function: now]" (type function) at path "deletedAt" at model.Query.exec (/Users/ek/Documents/github/loveAlakazam/4_MarketService/node_modules/mongoose/lib/query.js:4891:21) at m..
- Jest에서 아래와 같이 테스트를 하면, 테스트항목을 나타내준다. 위의 사진은 샘플 프로젝트에서 npm run test 수행 결과이다. 테스트케이스가 너무 많아서 시간이 오래걸리면 안뜬다. 그냥 .spec.ts 테스트 파일 한개만 테스트하면 위의사진과 같이 표기가된다. users.controller.spec.ts 파일만 테스트 $ npm run test users.controller 그런데 본격적으로 사용해야되는 프로젝트에서는 테스트항목이 나타나있지 않다... 왜일까? 그리고 Warning 문구가 있다. 저 문구가 너무 거슬린다! A worker process has failed to exit gracefully and has been force exited. This is likely caused ..
- Total
- Today
- Yesterday
- RDBMS
- nestjs jest
- 한달독서
- 습관개선
- 한달어스
- OS
- node.js
- Jekyll
- nestjs
- 참고
- 스마트폰중독
- vscode
- IT용어
- Mongoose
- Nest.js
- git
- 클린아키텍쳐
- TDD
- gem
- 미완
- typeORM
- MongoDB
- 바이트디그리
- jest
- 나도 할 수 있다
- 갓생살자
- MySQL
- 디지털디톡스
- 개발용어
- TypeScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |