백엔드 다루기 mongoose

MongoDB

데이터 스키마가 유동적이고 확장성이 뛰어난 NoSQL 데이터베이스

  • RDBMS에 비해 설정할 것도 적고 배워야할 내용도 다소 적다.

문서란?

키-값 쌍으로 이루어진 것

MongoDB 구조

서버 -> DB -> 컬렉션 -> 문서 순으로 큰것부터 작은것까지 구성되어 있다.

MongoDB 사용법

MongoDB 관련 설치 진행
mongoose라는 Node.js에서 사용하는 MongoDB 기반의 라이브러리 설치

Mongoose

1. 서버와 데이터베이스 연결하기

mongoose의 connect 함수를 사용

src/index.js

require('dotenv').config();

const mongoose = require('mongoose');

const {PORT, MONGO_URI } = process.env;

mongoose
	.connect(MONGO_URI)
	.then(...)
    .catch(...)

2. 스키마를 이용한 모델 생성 후 연결

src/models/post.js

import mongoose from 'mongoose';

...

const Post = mongoose.model('Post',PostSchema);
export default Post;

src/api/posts/posts.ctrl.js 수정

기존에 사용했던 파일은 DB연결을 하지 않은 단지 배열이었기때문에 해당 부분을 DB연결을 위해 수정

import Post from '../../models/post' //model에 있는 내용 가져온다.

export const write = async ctx => {
  const {title, body, tags  } = ctx.request.body;
  const post = new Post({
    title,
    body,
    tags,
  });
  try{
    await post.save(); //save 함수를 통해 비로소 DB에 저장
    ctx.body = post; //사용자에게 결과 반환을 위한 처리
  }
  catch(e){...}
}
 ....
 
 export const list = async ctx => {
   try {
     const posts = await Post.find().exec(); //model에 있는 기본 Post 내용들에서 찾아내기 위해 사용
     ...
   }
     catch(e){...}
}

정리하기

src/index.js : mongoose 연결

src/api/index.js : const posts = require('./posts');

src/api/posts/index.js : const postsCtrl = require('./posts.ctrl'); , 여러 관련된 CRUD 함수 두번째 매개변수로 연결

src/api/posts/posts.ctrl.js : 관련 함수들 설명 , exports.write = ctx=>{...}

src/models/posts.js : 연결될 스키마 및 모델 생성

하위에서 상위로 import하는 개념으로
DB를 가진 models에 있는 model을 posts.ctrl이 가져가 필요한 함수 동작 처리를 하고 해당 처리를 Koa-router에 의해 계속해서 연결되어 묶여서 처리된다.

이전내용

좋은 웹페이지 즐겨찾기