<오늘 배운 것>
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 |
댓글