Mongoose

Programming/Node.js

[Mocha] DB 접근 최소화를 위한 Mocha 테스트 코드 작성법

Mocha를 사용하여 테스트 코드를 작성하다 보면, 각 테스트 파일에서 데이터베이스(DB)에 연결하고 연결을 끊어야 하는 상황이 발생한다. 이러한 경우, 테스트 파일의 수보다 많은 DB 접근과 연결 끊기 작업이 발생할 수 있다. 이 문제를 해결하기 위해 Mocha를 사용하여 테스트 코드를 작성할 때 모든 테스트 전에 DB에 단 한 번 연결하고 모든 테스트 후에 단 한 번 연결을 끊는 방법을 소개한다. 이 예시는 mongoose와 mocha를 사용한다. Version Node.js: v16.15.1 npm: 9.6.4 mocha: 9.1.2 mongoose: 6.6.2 typescript: 4.9.3 기존 테스트 코드의 구조 및 코드 기존 테스트 폴더의 구조 test/ test1/ test파일들... te..

DataBase/MongoDB

[Mongoose] mongoose를 사용한 mongodb 필드를 삭제하는 방법

mongoose를 사용해서 마이그레이션 스크립트를 작성하던중 더이상 사용하지 않는 필드를 완전히 DB에서 삭제해야 하는 상황이 생겼다. 해당 필드를 DB에서 제거해보자. Version node.js: 16.15.1 mongoose: 6.6.2 mongoDB: 5.x Field 삭제 예를 들어 기존에 존재하던 스키마는 아래와 같은 형식이였다. const testSchema = new Schema({ test1: { type: String, required: true }, test2: { type: String, required: true }, test3: { type: String, required: true }, test4: { type: String, required: true }, test5: { t..

Programming/Typescript

[Mongoose] mongoose를 typescript와 사용하는 방법

express에서 mongoose에 typescript를 적용하고 활용하는 방법에 대해서 서술한다. 크게 Schema 생성 방법, method 생성 방법, static 생성 방법 3가지를 알아보고 결과를 확인한다. 환경 mongoose: 6.x typescript: 4.5.4 node.js: 16.x mongoose에 typescript 적용 스키마 생성 static과 method를 사용하지 않는 mongoose의 Schema는 간단하게 정의할 수 있다. 1. 스키마에 들어갈 타입을 정의한다. interface DBUser { name: string; email: string; gender: boolean; } 2. 새로운 스키마를 생성하고 제네릭에 타입을 넣어준다. (이렇게 하면 스키마 정의시 타입을 ..

DataBase/MongoDB

[Mongoose] mongoose 사용시 save가 느린 현상 해결 방법

mongoose를 사용해서 subDocument의 크기가 큰 데이터를 mongodb에 넣을때 너무 느린 현상이 발생했다. 해당 현상에 대한 원인과 해결 방법을 알아보자. 발생상황 약 2MB의 데이터를 mongoose에 넣는데 너무 느린 현상이 발생했다. 해당 document의 구조는 아래 코드와 같았다. const TestDataSchema = new mongoose.Schema({ // 약 40개의 raw ... },{ _id: false, } ); const testSchema = new mongoose.Schema( { testUser: { type: String, required: true, index: true }, testUUID: { type: String, required: true, in..

얼은펭귄
'Mongoose' 태그의 글 목록