Express는 node.js의 웹 개발 프레임워크 중 하나로, node.js를 사용하여 쉽게 서버를 구성할 수 있게 만들어 주는 역할을 한다.
// app.js
// Express 모듈 가져오기
const express = require('express');
// Express 앱 생성
const app = express();
// 루트 URL에 대한 미들웨어 등록
app.get('/', (req, res) => {
res.send('안녕');
});
// 서버를 3000번 포트에서 실행
const port = 3000;
app.listen(port, () => {
console.log('서버 실행 완료');
});
// node app.js 명령어를 통해 http://localhost:3000에 접속하면
// '안녕'이라는 문구가 보이고, 콘솔창에는 '서버 실행 완료'라고 뜸
MongoDB는 대용량 데이터를 처리하기 쉽게 만들어진 NoSQL 데이터베이스이다.
(NoSQL로 만들어짐 → 데이터를 구조화 할 필요가 없음(빠르게 개발이 가능하다.))
데이터를 배열 및 중첩 Document와 같은 복잡한 데이터 유형을 효율적으로 저장할 수 있는 유연한 JSON과 유사한 형식인 BSON으로 저장한다.
MongoDB 구성 요소
<예시>
데이터베이스: BlogDB
컬렉션: Posts, Users, Comments 등
도큐먼트: Posts 컬렉션에는 각 게시물에 대한 도큐먼트들이 있고, Users 컬렉션에는 각 사용자에 대한 도큐먼트들이 있다.
MongoDB의 데이터베이스는 전체 책장, 컬렉션은 한 책장 안에 있는 섹션(장르)이며, 도큐먼트는 섹션 안에 있는 각 책이라고 생각하면 된다.
Mongoose는 MongoDB와 express 간의 연결을 생성하는 라이브러리이며, DB의 스키마를 설정하기 위해 사용한다.
mongoDB는 스키마가 없어 자유롭고 빠르게 개발이 가능하지만, 데이터의 일관성과 유효성 검사 같은 부분에서 일부 제약이 있을 수 있다. mongoDB만 사용할 경우 데이터베이스에서 제약 조건이나 일관성을 강제하기가 어렵기 때문에 이를 보완하기 위해 mongoose를 사용한다.
스키마 정의하기
const { Schema } = require('mongoose');
// PostSchema 정의하기
const PostSchema = new Schema({
title :{
type: String,
required: true,
},
content :{
type: Number,
required: true,
}
})
module.exports = PostSchema;
정의한 스키마로 모델 만들기
const mongoose = require('mongoose');
const PostSchema = require ('./schemas/post')
exports.Post = mongoose.model('Post', PostSchema);
이렇게 정의된 모델을 사용하면 MongoDB에 데이터를 저장하고 검색하는 등의 작업을 할 수 있다. 예를 들어, 위에서 만든 Post 모델을 사용해서 새로운 게시물을 생성하거나 기존 게시물을 검색할 수 있게 된다.