몽고디비 추가 자동화

2025. 3. 13. 20:51백엔드/NODE.JS

728x90

1. 개요

  • seedUsers.js:
    초기 테스트 데이터를 MongoDB의 users 컬렉션에 삽입하는 스크립트입니다. (여기서는 10명의 사용자)
  • resetDB.js:
    기존 users 컬렉션 데이터를 모두 삭제하여 데이터베이스를 초기 상태로 만드는 스크립트입니다.

두 스크립트 모두 mongoose를 이용해 MongoDB에 연결한 뒤, 원하는 작업을 수행한 후 연결을 종료하는 구조로 작성되었습니다.


2. seedUsers.js 설명

const mongoose = require("mongoose");
const dotenv = require("dotenv");
const User = require("../models/User"); // User 모델 불러오기

dotenv.config(); // 환경 변수 로드

// MongoDB 연결
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const seedUsers = async () => {
  try {
    await User.insertMany([
      {
        kakaoId: "3954203015",
        admissionYear: "21",
        age: "22",
        hobby: ["독서"],
        isFirstLogin: false,
        isFirstMatch: true,
        matchedUsers: [],
        comment: "첫 번째 사용자",
        contactFrequency: "보통",
        contact_id: "@firstuser",
        major: "국어국문학과",
        mbti: "ESFJ",
        song: "Song 1",
      },
      {
        kakaoId: "123456789",
        admissionYear: "21",
        age: "23",
        hobby: ["롤", "배틀그라운드"],
        ...
      },
      ...
      // 총 10명의 사용자
    ]);

    console.log("✅ 테스트 사용자 10명 추가 완료!");
    mongoose.connection.close();
  } catch (error) {
    console.error("❌ 데이터 삽입 오류:", error);
    mongoose.connection.close();
  }
};

// 실행
seedUsers();

주요 포인트

  1. 환경 변수 로드: dotenv.config()를 통해 .env 파일에 있는 MONGO_URI 값을 읽어옵니다.
  2. DB 연결: mongoose.connect(process.env.MONGO_URI, { ... })로 MongoDB에 연결합니다.
  3. 데이터 삽입:
    • User.insertMany([...])를 사용해 여러 개의 문서를 한 번에 삽입합니다.
    • 이 스크립트에서는 10명의 사용자 정보를 미리 정의해놓고 추가합니다.
  4. 연결 종료:
    • 작업이 완료되면 mongoose.connection.close()를 호출해 연결을 종료합니다.
    • 에러 발생 시에도 동일하게 연결을 종료하여 리소스를 정리합니다.

사용 시나리오:

  • 개발 환경에서 테스트 데이터를 빠르게 삽입하고 싶을 때.
  • 새로 개발 환경을 세팅하거나, 데이터베이스를 초기화한 후 기본 사용자 데이터를 넣고 싶을 때.

3. resetDB.js 설명

const mongoose = require("mongoose");
const dotenv = require("dotenv");
const User = require("../models/User"); // User 모델 불러오기

dotenv.config(); // 환경 변수 로드

// MongoDB 연결
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const resetDatabase = async () => {
  try {
    console.log("🛑 기존 users 컬렉션 삭제 중...");
    await User.deleteMany({}); // 모든 데이터 삭제

    console.log("✅ 데이터 초기화 완료!");
    mongoose.connection.close();
  } catch (error) {
    console.error("❌ 데이터 초기화 오류:", error);
    mongoose.connection.close();
  }
};

// 실행
resetDatabase();

주요 포인트

  1. 환경 변수 로드 & DB 연결:
    dotenv.config()와 mongoose.connect 과정을 통해 데이터베이스에 연결합니다.
  2. 컬렉션 데이터 삭제:
    • User.deleteMany({})를 사용해 users 컬렉션에 들어있는 모든 문서를 삭제합니다.
    • 조건을 {}로 주었으므로 해당 컬렉션의 모든 데이터를 지우게 됩니다.
  3. 연결 종료:
    • 작업 완료 후 mongoose.connection.close()로 연결을 종료합니다.
    • 에러 발생 시에도 동일하게 종료합니다.

사용 시나리오:

  • 테스트 데이터를 여러 번 넣어보면서 데이터가 꼬였을 때 전부 삭제하고 싶을 때.
  • CI/CD 환경에서 테스트 전후로 DB를 리셋할 때.

4. 스크립트 실행 방법

  1. 프로젝트 루트 디렉터리에서 실행:또는 seedUsers.js로 스크립트 파일 이름이 다른 경우:
  2. node scripts/seedUsers.js
  3. # 1) 데이터베이스 초기화(모든 사용자 삭제) node scripts/resetDB.js # 2) 초기 사용자 10명 삽입 node scripts/addUsers.js
  4. .env 파일 설정:
    • .env 파일에 MONGO_URI가 정확히 설정되어 있어야 합니다. 예:
      MONGO_URI=mongodb://localhost:27017/your-database-name
      
    • 다른 환경 변수들이 필요한 경우도 .env에 정의해둡니다.
  5. 개발 환경 vs 운영 환경:
    • 개발용 DB와 운영용 DB가 다르다면, .env.development / .env.production 등으로 분리하여 사용하고, 실행 스크립트에서 NODE_ENV를 설정할 수도 있습니다.

5. 요약

  • seedUsers.js:
    • 10명의 가상 사용자 데이터를 삽입하여 테스트용으로 빠르게 사용할 수 있는 스크립트.
  • resetDB.js:
    • 기존 users 컬렉션 데이터를 전부 삭제하여 개발 환경을 초기화할 수 있는 스크립트.
  • 주 사용 사례:
    • 로컬 개발 환경에서 반복 테스트 시 DB를 쉽게 초기화하고, 테스트 데이터를 주입할 수 있음.
    • CI 파이프라인에서 자동으로 테스트 환경을 셋업하거나, 테스트 후 초기화할 때 활용 가능.

 

728x90

'백엔드 > NODE.JS' 카테고리의 다른 글

JWT토큰  (1) 2025.03.13
카카오 로그인  (0) 2025.03.13
MongoDB ,Mongoose  (0) 2025.03.13
등록 API,  (0) 2025.03.13
서버 URL 및 엔드포인트  (0) 2025.03.13