TIL | #24 Node.js | mongoDB, mongoos, esm
2021-04-14(수)
mongoos moudle
yarn add [email protected]
yarn add [email protected]
mongoos Schema에서 기본적으로 지원하는 타입은 아래와 같다.
String, Number, Date, Boolean,
Buffer : 파일을 담을 수 있는 버퍼
Mixed(Schema,Types.Mixed) : 어떤 데이터도 넣을 수 있는 타입
ObjectId(Schema.Types.Mixed) : 객체 아이디, 주로 다른 객체와 비교할 때 사용한다.
Array : 배열 형태의 값으로 [ ]로 감싸서 사용한다
우선 몽구스에서 데이터베이스 데이터를 정의하자.
// models.post.js
import mongoose from 'mongoose';
const {Schema} = mongoose;
const PostSchema = new Schema({
title:String,
body:String,
tags:[String],//문자열로 이루어진 배열
publishedDate:{
type:Date,
default:Date.now,//현재 날짜를 기본으로 지정
},
});
const Post = mongoose.model('Post',PostSchema);
export default Post;
몽구스를 이용해서 CRUD를 작성해보자.
// api/posts/posts.ctrl.js
import Post from '../../models/post';
// 포스트 추가
// POST /api/posts
export const write = async (ctx) => {
const { title, body, tags } = ctx.request.body;
const post = new Post({
title,
body,
tags,
});
try {
await post.save();
ctx.body = post;
} catch (e) {
ctx.throw(500, e);
}
};
// 포스트 목록 조회
// GET /api/posts
export const list = async (ctx) => {
try {
const posts = await Post.find().exec();
ctx.body = posts;
} catch (e) {
ctx.throw(500, e);
}
};
// 포스트 목록 삭제
// DELETE /api/posts
export const deleteList = async (ctx) => {
try {
await Post.deleteMany().exec();
ctx.status = 204;
} catch (e) {
ctx.throw(500, e);
}
};
// 특정 포스트 목록 조회
// GET /api/posts/:id
export const read = async (ctx) => {
const { id } = ctx.params;
try {
const post = await Post.findById(id).exec();
if (!post) {
ctx.status = 404;
return;
}
ctx.body = post;
} catch (e) {
ctx.throw(500, e);
}
};
// 특정 포스트 제거
// DELETE /api/posts/:id
export const remove = async (ctx) => {
const { id } = ctx.params;
try {
await Post.findByIdAndRemove(id).exec();
ctx.status = 204;
} catch (e) {
ctx.throw(500, e);
}
};
// 포스트 수정(특정 필드 변경)
// PATCH /api/posts/:id
export const update = async (ctx) => {
const { id } = ctx.params;
try {
const post = await Post.findByIdAndUpdate(id, ctx.request.body, {
new: true, //이 값을 설정하면 업데이트 된 데이터를 반환
//false면 업데이트 되기 전의 데이터를 반환.
}).exec();
if (!post) {
ctx.status = 404;
return;
}
ctx.body = post;
} catch (e) {
ctx.throw(500, e);
}
};
esm module
module의 node.js가 아닌 ECMAScript를 패키징하는 공식 표준 형식을 제공해준다. (require과 export가 아닌 import, export 사용이 가능)
yarn add esm
아래와 같이 기존의 메인 실행코드를 등록해서 사용하면 된다.
// index.js
require('esm')(module);
module.exports = require('./main.js');
최근에는 esm 모듈 없이도 사용이 가능하다!
package.json 파일에 아래와 같이 타입을 모듈로 지정해주면 require과 module.export대신 import export를 사용할 수 있다.
{
...
"type": "module"
}
Author And Source
이 문제에 관하여(TIL | #24 Node.js | mongoDB, mongoos, esm), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goblin820/TIL-24-Node.js-mongoDB-mongoos-esm저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)