← 홈페이지 5강 목록으로
💾
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/
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗