목표사항 상품검색 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..
몽고디비에서 필드의 존재여부에 따라 상황별 쿼리문 어떻게 만들지? 오랜만에 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..
패키지 설치 $ npm i @nestjs/config $ npm i @nestjs/mongoose mongoose $ npm i dotenv @types/dotenv - 필자는 몽고디비 altas를 사용한다. 그러므로 .env에서 mongodb uri를 불러와야하는데 이때 꼭 필요한 모듈이 @nestjs/config 이다. process.env.MONGODB_URI 보다는 configService.get('MONGODB_URI') 를 쓰는게 좋다 configs 디렉토리에 module 과 service 생성 - mongodb-config.service.ts // path: /src/config/mongodb-config.service.ts import { Injectable } from '@nestjs/c..
이 포스팅을 읽고 모르는 부분이 있으면 자유롭게 코멘트를 주셔도 됩니다. 제 포스팅을 통해 개념을 이해에 도움이 되기를 바랍니다. 읽어주셔서 감사합니다 :) [문제1 전체코드] 더보기 var express = require('express'); var app = express(); var fs = require('fs'); var path = require('path'); var qs = require('querystring'); //1. body-parser 모듈을 불러오세요. var bodyParser = require('body-parser'); var sanitizeHtml = require('sanitize-html'); var template = require('./lib/template.js..
몽고디비 클러스터 이동으로 json데이터를 다른 클러스터로 이관하는 작업을 하게 되었습니다. 몽고디비는 document 기반의 데이터베이스여서 RDBMS와 다르게 넣은 데이터 타입에 맞게 알아서 스키마를 갖춥니다. 작업을 시작하기 전에... NoSQL이 무엇인지, 왜 써야되는지, 어떤종류가 있는지 를 소개하고 몽고디비에 데이터를 넣는 작업을 진행하겠습니다. > NoSQL 데이터베이스가 무엇인가요? NoSQL은 Not Only SQL 약자 입니다. NoSQL 데이터베이스는 Table(표)형식을 갖추지 않은 비관계형 데이터베이스 입니다. NoSQL은 관계형 데이터베이스 이외의 형식으로 데이터를 저장하는 데이터베이스 이기도 하지만 관계형 데이터베이스와 방식은 다르지만, 관계 데이터 도 저장할 수 있습니다. 즉..
- Total
- Today
- Yesterday
- 미완
- MySQL
- Jekyll
- 갓생살자
- jest
- TypeScript
- 디지털디톡스
- gem
- vscode
- Nest.js
- MongoDB
- node.js
- nestjs jest
- 나도 할 수 있다
- 습관개선
- typeORM
- 바이트디그리
- 한달어스
- nestjs
- TDD
- 참고
- 한달독서
- 스마트폰중독
- IT용어
- RDBMS
- Mongoose
- git
- 개발용어
- 클린아키텍쳐
- OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |