오늘은 node.js 입문주차 2주차 강의를 들었다.
웹미니 프로젝트 당시에 파이썬을 활용해서 데이터베이스를 구축해본 적이 있었는데 노드를 활용하는 건 지금 익숙하지 않아서 용어들이 다 헷갈려서 하나씩 개념을 한 줄씩 정리하려고 한다.
2.1 데이터베이스과 mongoDB
-> 데이터베이스에 저장한다 = DBMS가 설치된 서버에 저장한다.
종류 2가지
- 관계형 데이터베이스 RDB
MongoDB Atlas : mongoDB의 클라우드
2.2 Studio 3T
: mongoDB 데이터를 편하게 관리하는 GUI툴 (시각적 툴)
2.3 - 1. Mongoose = ODM (object document mapper)
: 데이터를 쉽게 MongoDB에 읽고 쓰게 해주는 js 라이브러리
즉, js 객체 object를 mongodb 문서 (document)로 쉽게 변환, 또는 반대로 문서를 객체로 반환
mongodb에서 각 데이터 하나를 문서 (document)
- 문서 ( 1개 이상 key - value; JSON형식)
import express from 'express';
const router = express.Router();
// 1. mongoose
// 2. API를 구현한다.
// 3. 클라이언트로 부터 전달받은 데이터를 가져온다.
// 4. goodsId 중복되지 않았는지 검사한다.
// 4-1. 만약, goodsId가 중복된다면, 에러메시지를 전달한다.
// 5. 상품(Goods)를 생성한다.
// 6. 생성된 상품 정보를 클라이언트에게 응답(Response)을 반환한다.
// 1.mongoose, Goods 모델가져오기
import mongoose from 'mongoose';
import Goods from '../schemas/goods.js';
// 2. API를 구현한다.
router.post('/goods', async (req, res) => {
// 3. 클라이언트로 부터 전달받은 데이터를 가져온다.
// goodsId, name, thumbnailUrl, category, price
const { goodsId, name, thumbnailUrl, category, price } = req.body;
// 4. goodsId 중복되지 않았는지 검사한다. -> mongoDB에 데이터를 조회해서, 해당하는 데이터가 mongoDB에 존재하는지 확인
const goods = await Goods.find({goodsId: goodsId}).exec(); // 데이터를 생성할 떄는 사용이 안되고, 데이터를 조회할 때 사용된다.
// 4-1. 만약, goodsId가 중복된다면, 에러메시지를 전달한다.
if(goods.length){ // 배열이 비어있지 않으면 참이 되는 조건
return res.status(400).json({errorMessage: '이미 존재하는 데이터입니다.'});
}
// 5. 상품(Goods)를 생성한다.
const createdGoods = await Goods.create({
goodsId: goodsId,
name: name,
thumbnailUrl : thumbnailUrl,
category: category,
price: price,
});
// 6. 생성된 상품 정보를 클라이언트에게 응답(Response)을 반환한다.
return res.status(201).json({goods: createdGoods});
});
export default router;