💾
EPISODE 06
JSON 영속화 · dotenv · .gitignore
파일 DB와 .env
메모리에만 저장하던 데이터를 JSON 파일로 영속화하고, .env로 환경 변수를 안전하게 관리하는 방법을 익힙니다.
JSON DBdotenv.env
소요 시간
⏱ 30~45분
난이도
📊 중급
선수 조건
🎯 node-05
결과물
재시작해도 데이터가 유지되는 작은 API
이 강의에서 배우는 것
- 1fs로 JSON 파일을 읽고 쓰는 헬퍼를 작성한다
- 2dotenv로 .env의 환경 변수를 process.env로 로드한다
- 3PORT/NODE_ENV/DB_PATH 같은 환경 변수를 활용한다
- 4.env와 data/를 .gitignore에 등록한다
1. 왜 JSON 파일 DB?
지금까지 만든 API는 데이터를 메모리(배열)에 저장 → 서버 재시작 시 모두 사라짐. JSON 파일로 영속화하면 재시작해도 유지됩니다.
text
요청 → Express → JSON 파일 읽기 → 처리 → JSON 파일 쓰기 → 응답2. JSON 파일 읽기/쓰기 헬퍼
javascript
const fs = require('fs');
const path = require('path');
const DB_PATH = path.join(__dirname, 'data', 'db.json');
function readDB() {
if (!fs.existsSync(DB_PATH)) return [];
const raw = fs.readFileSync(DB_PATH, 'utf-8');
return JSON.parse(raw);
}
function writeDB(data) {
const json = JSON.stringify(data, null, 2);
fs.writeFileSync(DB_PATH, json, 'utf-8');
}3. dotenv
bash
npm install dotenv.env 파일
text
PORT=3000
NODE_ENV=development
DB_PATH=./data/db.json사용
javascript
// 반드시 파일 맨 위에
require('dotenv').config();
const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV;⚠️
.env는 반드시 .gitignore에 추가해 git에 올리지 않습니다.
4. 환경 변수 활용
| 변수 | 용도 |
|---|---|
| PORT | 서버 포트 |
| NODE_ENV | 환경 구분 (development/production) |
| DB_PATH | 데이터 파일 경로 |
| JWT_SECRET | 인증 시크릿 키 |
5. 데이터 폴더 구조
text
프로젝트/
├── app.js
├── .env
├── .gitignore
├── package.json
└── data/
└── contacts.json ← 자동 생성text
# .gitignore
node_modules/
.env
data/