본문 바로가기
Do it Node.js/EJS BackEnd

12. 몽고DB, 스키마

by 갱생angel 2024. 3. 8.

데이터베이스 : 여러 사람이 공유하여 사용할 목적으로 체계화해서 통합, 관리하는 데이터의 집합

  -관계형 데이터베이스 : 자료의 구조를 행과 열로 구분해서 표 형태로 관리, SQL 데이터베이스라고도 함

  -NoSQL 데이터베이스 : SQL을 사용하지 않고, 자료를 문서 형태로 저장하는 JSON 형식 데이터베이스

 

몽고DB : NoSQL 데이터베이스

  -도큐먼트 : 자료를 저장한 문서, 컬렉션들의 집합

  -아틀라스 : 클라우드에 몽고DB를 올려놓고 사용하는 서비스

  -클러스터 : 여러 데이터베이스 서버를 연결해 놓은 서버 그룹

MongoDB for VS Code : Visual Code Studio에서 몽고DB를 사용할 수 있는 확장

 

몽구스 : MongoDB를 Node.js로 사용할 수 있도록 하는 확장 모듈

dotenv : .env 파일을 사용하기 위한 모듈 

  -.env : 외부에 드러내고 싶지 않은 환경 변수를 저장하는 파일 

  -환경 변수 : 데이터베이스나 비밀번호처럼 애플리케이션마다 달라지는 정보를 가리킴

//몽구스, dotenv 설치
>> npm install mongoose dotenv

 

<.env> : .env 파일 작성

DB_CONNECT = mongodb+srv://<username>:<password>@cluster0.oimz7n5.mongodb.net/myContact
//커넥션 스트링(데이터베이스)를 변수에 지정

 

 

<app.js>, config - <dbConnect.js> : 몽고DB를 비동기 처리로 연결

.config() : 파일을 인식하여 구성하는 함수

mongoose.connect(URL[, 옵션]) : 데이터베이스, 커넥션 스트링에 연결

process.env : 사용자 환경이 담긴 .env 파일에 환경 변수를 가져옴

//dbConnect.js
const mongoose = require("mongoose"); //몽구스 불러오기
require("dotenv").config(); //dotenv 물러오기

const dbConnect = async () => { //몽고DB 연결 함수
  try {
    const connect = await mongoose.connect(process.env.DB_CONNECT); //커넥션 스트링 환경 변수 가져오기
    console.log("DB Connect");
  } catch (err) {
    console.log(err);
  }
};

module.exports = dbConnect;
//app.js
const express = require("express");
const dbConnect = require("./config/dbConnect"); //dbConnet.js 파일 연결
const app = express();

dbConnect();  //dbConnet 실행

app.get("/", (req, res) => {
  res.status(200).send("Hello Node");
});

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/contact", require("./routes/contactRoutes"));

app.listen(3000, () => {
  console.log("3000 포트에서 서버 실행 중");
});


스키마 : 애플리케이션에서 사용할 자료의 형태를 지정하는 것

 

models - <contactSchema.js> : 연락처 스키마 만들기

mongoose.Schema(스키마, [옵션]) : 스키마를 생성

  -type : 속성 유형

  -required : 필수 속성 여부 

  -timestamps : 자료를 추가하거나 변경한 시간 기록

  -unipue : 중복 여부 지정

mongoose.model(모델명, 스키마) : 자료를 조회, 수정, 삭제 등의 작업을 할 수 있도록 모델로 변환

  -스키마를 사용하려면 모델로 변환해서 사용해야 함

  -모델 이름은 대문자 단수형(Contact), 연결된 컬렉션은 소문자 복수형(contacts)

const mongoose = require("mongoose"); //몽구스 불러오기

const contactSchema = new mongoose.Schema( //스키마 생성
  {
    name: { 
      type: String, //속성 유형
      required: true, //필수 속성인지 여부
    },
    email: {
      type: String,
    },
    phone: {
      type: Number,
      required: [true, "전화번호는 꼭 기입해주세요."], //오류 메시지도 함께 지정
    },
  },
  {
    timestamps: true, //자료를 추가하거나 수정한 시간이 자동으로 기록
  }
);

module.exports = mongoose.model("Contact", contactSchema); //스키마를 모델로 만들어서 외부로 모듈을 내보냄

'Do it Node.js > EJS BackEnd' 카테고리의 다른 글

14. CRUD  (0) 2024.03.12
13. RESTful API  (0) 2024.03.11
11. 미들웨어  (0) 2024.03.06
10. Express  (0) 2024.03.03
9. Node 비동기 처리  (0) 2024.03.01