장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
*Node.js 프로그래밍 입문(고경희)를 읽고 작성한 글입니다.
몽고DB : 분산형 NoSQL DB로 JSON 형식을 이용해 문서에 자료 저장.
- Collection: 여러 개의 도큐먼트로 구성된 자료 저장 방식
- Document : 자료 저장한 문서
- 여러 연락처를 담은 컬렉션과 연락처 각각을 담은 도큐먼트로 구성
- MongoDB Atlas : 클라우드에서 데이터베이스 관리하는 툴
- Shared: 무료
- Serverless: 사용량에 따라 비용 부과
- Dedicated: 매달 일정 금액 지불
- 클러스터: 여러 데이터베이스 서버를 연결해 놓은 서버 그룹
추가 설치
Mongoose module : DB 접속과 관리 명령 제공
dotenv package: 환경 변수 설정용
.env
환경 변수란 메모리 주소나 비밀번호처럼 애플리케이션마다 달라지는 정보 - 외부에 드러내고 싶지 않은 값 저장 -> gitignore
DB 연결 정보가 외부에 드러나지 않도록 .env 저장
process
.env 파일에 접근하기 위한 객체로 환경 변수나 프로세스 관련된 이벤트 처리에 사용
process.env.variable
몽구스와 dotenv 패키지 설치 그리고 DB 커넥션 스트링(.env)까지 저장했으면 DB 연결하면 된다.
config -> dbConnect.js
DB schema
애플리케이션에서 사용할 자료의 형태를 정하는 것: 자료 구조 전담(어렵게 말하면 각 필드의 유형 정의)
예를 들어 사용자 정보 스키마를 미리 만들어두면 연락처 앱뿐만 아니라 로그인 처리에도 가져다 쓸 수 있어서 편리하다.
Schema data type
String | Number | Boolean | Date | Array | Object | Mixed |
Document
MongoDB의 기본 자료 구조로, Document 각각은 자동 생성된 id를 가진다. 예를 들어 거래 정보를 POST해서 DB.create를 하면 거래 정보 각각은 하나의 Document로 생성되고 이 거래 정보들은 Collection으로 모여 DB를 구성한다.
models/ transactionModel.js
스키마를 만들었으면 모델로 바꿔야 한다.
const mongoose = require('mongoose');
// schema(스키마, [옵션: 유효성 검사 규칙])
const transactionSchema = new mongoose.Schema(
{
name: {
type: String,
required: [true, '이름은 두 글자 이상으로 설정해주세요.'],
},
email: {
type: String,
},
},
{
timestamps: true,
// record time when editting or adding new data automatically
// createdAt, updateAt
}
);
// model("컬렉션명", 스키마)
const Transaction = mongoose.model("Transaction", transactionSchema);
module.exports = Transaction;
이 모델은 컨트롤러에서 API 요청에 따라 DB에 접근해 값 수정, 추가 등 처리 작업에 사용된다.
controllers/transactionController.js
const Transaction = require('../models/transactionModel')
const createTransaction = asyncHandler(async (req, res) => {
console.log(req.body);
const { name, email } = req.body;
if (!name || !email ) {
return res.status(400).send('필수값이 입력되지 않았습니다.');
}
// DB @create Document
const transaction = await Transaction.create({name, email});
res.status(201).send('Create Transactions');
});
이렇게 되면 MVC에서 DB데이터 처리 로직을 담은 Model을 정의하고 Controller에서 모델에 DB 데이터 수정 요청이 가능하도록 연결한 상태가 된다.
'KB_ITs_Your_Life_6th' 카테고리의 다른 글
[Node.js] 비동기데이터 처리를 위한 폼 태그 API 이해 (1) | 2025.05.03 |
---|---|
[Node.js][MongoDB] MVC 모델의 Controller 작성하기 (0) | 2025.04.21 |
웹 동작 전체 구조: 자바를 왜 배워야 할까? (0) | 2025.04.15 |
[Node.js] 비동기처리 동작을 이해해보자 (1) | 2025.03.25 |
[Node.js] 파일 관리 - path, File System 모듈 (0) | 2025.03.21 |