백엔드 다루기 mongoose
MongoDB
데이터 스키마가 유동적이고 확장성이 뛰어난 NoSQL 데이터베이스
- RDBMS에 비해 설정할 것도 적고 배워야할 내용도 다소 적다.
문서란?
키-값 쌍으로 이루어진 것
MongoDB 구조
데이터 스키마가 유동적이고 확장성이 뛰어난 NoSQL 데이터베이스
키-값 쌍으로 이루어진 것
서버 -> 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 : 연결될 스키마 및 모델 생성
mongoose의 connect 함수를 사용
require('dotenv').config();
const mongoose = require('mongoose');
const {PORT, MONGO_URI } = process.env;
mongoose
.connect(MONGO_URI)
.then(...)
.catch(...)
import mongoose from 'mongoose';
...
const Post = mongoose.model('Post',PostSchema);
export default Post;
기존에 사용했던 파일은 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
에 의해 계속해서 연결되어 묶여서 처리된다.
이전내용
Author And Source
이 문제에 관하여(백엔드 다루기 mongoose), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@khw970421/백엔드-다루기-mongoose
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(백엔드 다루기 mongoose), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khw970421/백엔드-다루기-mongoose저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)