몽고DB

공부의 기록·2021년 11월 12일
0

Node.JS

목록 보기
17/32
post-thumbnail

MongoDB

MongoDB 는 크로스 플랫폼 지향동적 스키마형 도큐먼트 데이터 타입 을 사용하는 비관계형 데이터베이스 시스템 입니다.

  1. 크로스 플랫폼 지향이란?

    간단하게 말하면, 여러 작동 환경에서 모두 사용할 수 있게 만드는 것을 지향한다는 것입니다.

  2. 동적 스키마형 도큐먼트 데이터 타입이란?

    간단하게 말하면, Collection 내의 도큐먼트들이 서로 다른 데이터 형태 및 다른 수 를 가질 수 있는 구조입니다.

  3. 비관계형 데이터베이스 시스템이란?

    전통 데이터베이스 양식인 행과 열이 존재하는 SQL 방식의 데이터베이스 시스템이 아닌 NoSQL 방식의 데이터베이스 시스템을 의미합니다.

설치

npm i mongodb
npm i connect-mongo
npm i mongoose
npm i bcrypt

핵심이론

Node.js 에서 MongoDB 를 사용하기 위해서는 Mongoose 를 이용할 수 있습니다.
Mongoose 는 비관계형 데이터 모델을 만들기 위해서 Schema 기능을 지원하며, 그 외에도 검색, 업데이트, 제거 등의 다양한 메서드를 지원합니다.

한 마디로, MongoDB 에 대한 CRUD 기능을 전부 지원한다는 의미를 품고 있습니다/

파일구조

본 문서에서는 백엔드 프레임워크 express 를 전제로 이야기하고 있습니다.

.env

DB 연결 및 보안 미들웨어와 관련한 환경변수 파일인 .env 를 사용하기 위한 모듈 설치 후에 사용할 수 있습니다. 이에 관련하여 express doc 또는 dotenv doc 을 참고하세요.

index.js

import "dotenv/config";

import "./DB";

import "./model/user/userModel";
import "./model/file/imageModel";
import "./model/file/videoModel";

import app from "./app";

const serverOn=()=>console.log(`✅ index.js : http://localhost:${PORT}`);
app.listen(process.env.PORT,serverOn);

db.js

import mongoose from "mongoose";
// url 은 터미널에서 mongoDB 키면 나오는 링크, dbName 은 새로 생성할 DBs 이름
mongoose.connect("mongodb://url/dbName",{
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: true,
  useCreateIndex: true,
})

const db=mongoose.conenction;

const accessFail=()=>console.log(`❎ db.js : fail connection`);
const accessFail=()=>console.log(`✅ db.js : success connection`);

db.on("error", accessFail);
db.once("open", accessSuccess);

app.js

mongoDB 에 데이터를 요청하고 받은 데이터를 처리하는 등의 백앤드 시스템을 구축하기 위해서 express 와 관련된 전역적인 셋팅을 기입하는 파일입니다.

express 프레임워크 선언부터 morgan 과 같은 상태관리 라이브러리, express-session 과 같은 세션 라이브러리, 보안 및 유효성 제어를 위한 middleware, 각종 router 와 view-engine 셋팅 등이 포함됩니다. 이와 관련해서 express doc 을 참고하세요.

model/someModel

비관계형 데이터베이스 모델을 구성하는 요소는 다음과 같다.

  1. Schema 선언
import mongoose from "mongoose";

const userSchema=new mongoose.Schema({
  	// 항목들
});
  1. 메소드 활용부
import "dotenv/config";
import bcrypt from "bcrypt";

userSchema.pre("save",async ()=>{
  if(this.isModified("password") {
     this.password=awiat bcrypt.hash(this.password, process.env.HASH_COUNT);
  }
});
  1. Model 선언
import mongoose from "mongoose";

const userModel=mongoose.model("User",userSchema);

export default userModel;

API

mongoose 는 아주 다양한 메서드(API) 를 제공해준다.
이와 관련한 것은 필요한 기능을 관련 문서 mongoose doc 에서 찾아보자.

profile
2022년 12월 9일 부터 노션 페이지에서 작성을 이어가고 있습니다.

0개의 댓글