몽고디비 추가 자동화
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();
주요 포인트
- 환경 변수 로드: dotenv.config()를 통해 .env 파일에 있는 MONGO_URI 값을 읽어옵니다.
- DB 연결: mongoose.connect(process.env.MONGO_URI, { ... })로 MongoDB에 연결합니다.
- 데이터 삽입:
- User.insertMany([...])를 사용해 여러 개의 문서를 한 번에 삽입합니다.
- 이 스크립트에서는 10명의 사용자 정보를 미리 정의해놓고 추가합니다.
- 연결 종료:
- 작업이 완료되면 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();
주요 포인트
- 환경 변수 로드 & DB 연결:
dotenv.config()와 mongoose.connect 과정을 통해 데이터베이스에 연결합니다. - 컬렉션 데이터 삭제:
- User.deleteMany({})를 사용해 users 컬렉션에 들어있는 모든 문서를 삭제합니다.
- 조건을 {}로 주었으므로 해당 컬렉션의 모든 데이터를 지우게 됩니다.
- 연결 종료:
- 작업 완료 후 mongoose.connection.close()로 연결을 종료합니다.
- 에러 발생 시에도 동일하게 종료합니다.
사용 시나리오:
- 테스트 데이터를 여러 번 넣어보면서 데이터가 꼬였을 때 전부 삭제하고 싶을 때.
- CI/CD 환경에서 테스트 전후로 DB를 리셋할 때.
4. 스크립트 실행 방법
- 프로젝트 루트 디렉터리에서 실행:또는 seedUsers.js로 스크립트 파일 이름이 다른 경우:
- node scripts/seedUsers.js
- # 1) 데이터베이스 초기화(모든 사용자 삭제) node scripts/resetDB.js # 2) 초기 사용자 10명 삽입 node scripts/addUsers.js
- .env 파일 설정:
- .env 파일에 MONGO_URI가 정확히 설정되어 있어야 합니다. 예:
MONGO_URI=mongodb://localhost:27017/your-database-name - 다른 환경 변수들이 필요한 경우도 .env에 정의해둡니다.
- .env 파일에 MONGO_URI가 정확히 설정되어 있어야 합니다. 예:
- 개발 환경 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 |