본문 바로가기
TIL

TIL D-83 MongoDB

by 홍차23 2019. 11. 6.

<오늘 배운 것>

1. 스키마와 모델

2. bodyParser 적용

3. 데이터 생성 -> 이부분이 저번에 따라 한 튜토리얼이랑 다른 느낌.

포스트맨으로 보내는데 시간이 좀 걸렸다. 프론트 전혀 없이 데이터만 주고 받는 방식.

스키마와 모델

스키마(schema) : 해당 컬렉션의 문서에 어떤 종류의 값이 들어가는지 정의

모델(model) : 스키마를 통해서 만드는 인스턴스

 

스키마 디자인 구상->코드 작성

const mongoose = require('mongoose');
const { Schema } = mongoose;

const Author = new Schema({
	name: String,
    email: String
});

const Book = new Schema({
	title: String,
    authors: [Author],
    publishedDate: Date,
    price: Number,
    tags: [Strings],
    createdAt: { //기본값을 설정할 때는 이렇게 객체로 설정
    	type: Date,
        default: Date.now //기본값은 현재 날짜
    }
});

// 스키마를 모델로 변환하여 내보내기
module.exports = mongoose.model('Book', Book); // 두 개의 파라미터 필요로 함. (해당스키마이름, 스키마객체)

 

//스키마 이름의 복수형태로 컬렉션이름을 만든다.

Book 이라면, 실제 데이터베이스에서 생성되는 컬렉션 이름은 books 이다.

 

 

bodyParser 적용하기

$ yarn add koa-bodyparser

 

미들웨어 적용

const bodyParser = requrie('koa-bodyparser');

app.use(bodyParser());

app.use(async ctx => {
	ctx.body = ctx.request.body;
});

 

데이터 생성

create

exports.create = async(ctx) => {
    //request body 에서 값을 추출
        const {
            title,
            authors,
            publishedDate,
            price,
            tags
        } = ctx.request.body;

        //Book 인스턴스를 생성
        const book = new Book({
            title,
            authors,
            publishedDate,
            price,
            tags
        });

        //만들어진 Book 인스턴스를 이렇게 수정도 가능
        //book.title = title;

        //.save() 함수를 실행하면 실제로 데베에 데이터 작성함.
        //promise  반환
        try {
            await book.save();
        } catch(e) {
            //http 상태 500 과 internal error 메시지 반환, 에러 기록
            return ctx.throw(500, e);
        }

        //저장한 결과 반환
        ctx.body = book;
};

 

  • 프로젝트 의뢰를 받았다. 그래서 이전에 만들어둔 노드 게시판 수정작업을 2시간정도 했다.
  • 저녁엔 주로 자바 gui 공부를 했다. 끝이 없는 자바 과제.
  • 과제가 다 끝났으니 일찍 자려고 몽고디비 기본만 간단히 보려고 했는데 하다보니 어느새 12시,,
  • 굿즈레터가 재밌게 나올 것 같다.

'TIL' 카테고리의 다른 글

TIL D-80 중첩 json  (0) 2019.11.12
TIL D-81 Nodejs 게시판  (0) 2019.11.08
TIL D-84 git config, crud 2탄  (0) 2019.11.05
Mozilla - javascript first steps  (0) 2019.11.05
Mozilla - array  (0) 2019.11.04

댓글