Node js를 활용해 CRUD만들어보기(1)

하정현·2023년 11월 3일

Node.js

목록 보기
4/12
node로 만들어보기 package manager npm

폴더 구조 만들어주고

npm init -y

패키지 추가

npm install express

잘 추가 되었다.
나는 모듈 require()와 module.exports를 사용할 것이기 때문에 밑에 type:common.js 를 추가해주자
다음에는 ES6 방법으로 해봐야겠다.


다음은 app.js 테스트

vs code 확장 프로그램 Thunder Client를 통해 요청까지 정상적으로 실행 됐다.

다음으로 할거 라우터를 만들어보자 아니다
그 전에 스키마를 먼저 정의해줘야 겠다

상품을 팔아야되는데 뭘 팔아야될까

짜쟌 신발 당첨

신발에 필요한 스키마는 뭘까??
스키마 (= 짜장면 만들 때 필요한 재료 같은거 예시로 춘장, 양파, 면 => 이런것들의 타입 정의)

일단 몽고DB에 연결해보자

npm install mongoose로 설치 해주고

//ES6로 했을 때
//근데난 require 쓸거임

import mongoose from 'mongoose';

const connect = () => {
  // mongoose.connect는 MongoDB 서버에 연결하는 메서드입니다.
  mongoose
    .connect(
      // 빨간색으로 표시된 부분은 대여한 ID, Password, 주소에 맞게끔 수정해주세요!
      'mongodb+srv://sparta-user:aaaa4321@express-mongo.uy7ttg7.mongodb.net/?retryWrites=true&w=majority',
      {
        dbName: 'node_lv1', // node_lv1 데이터베이스명을 사용합니다.
      },
    )
    .then(() => console.log('MongoDB 연결에 성공하였습니다.'))
    .catch((err) => console.log(`MongoDB 연결에 실패하였습니다. ${err}`));
};

mongoose.connection.on('error', (err) => {
  console.error('MongoDB 연결 에러', err);
});

export default connect;

######################################

/schema/index.js   
//몽구스 패키지에서 가져옴
const mongoose = require("mongoose");

const connect =  () => {
    mongoose
        .connect("mongodb://0.0.0.0:27017/npb_mall")
        .catch(err => console.log(err));
};


mongoose.connection.on("error", err => {
    console.error("몽고디비 연결 에러", err);
});

module.exports = connect;
app.js 파일에 연결

에러메세지가 안나오니 정상적으로 연결 된것 같다.

이제 진짜 상품에 대한 스키마를 정의해보자
products.schema.js

const mongoose = require("mongoose");


const shoesSchema = new mongoose.Schema({
  shoesId: {
    type: Number,
    required: true,
    unique: true
  },
  name: {
    type: String,
    required: true,
    unique: true,
  },
  brand: {
    type: String,
    required: true,
    unique: false,
  },
  price: {
    type: Number,
  }
});

//Shoes라는 모델 명으로, shoesSchema를 사용
module.exports = mongoose.model("Shoes", shoesSchema);

신발 고유 넘버, 신발의 이름, 브랜드, 가격을 정의했고 각 타입과
고유한 값인지? 필수사항인지 정의했다.

이제 몽고 DB에도 연결 되었으니 Router를 정의해서 상품을 넣어보자

const express = require("express");
const router = express.Router();


//Create
const Shoes = require("../schemas/products.schema.js");
router.post("/shoes/", async (req, res) =>{
    const {shoesId, name, brand, price} = req.body;

    const shoes = await Shoes.find({shoesId});    


    if(shoes.length){
        return res.status(400).json({
            success:false,
            errorMessage:"이미 존재하는 ShoesId 입니다."
        });
    }

    //DB접근
    const createShoes = await Shoes.create({shoesId, name, brand, price});
    res.json({shoes: createShoes});
    
})

module.exports = router;

express에 있는 Router()를 router에 할당해줬다.
그리고 상품 스키마 폴더에있는 shoes스키마 를 가지고와서
post 방식으로 req.body에 담긴 객체를 구조분해 할당 해주고
이미 있다면 status 400번으로 에러메세지 출력해준다.

그러면 thunder client로 요청을 보낸 후
studio 3T를 통해 데이터가 잘 들어갔는지 확인해보자!

node app.js로 터미널 열주고 body에다 정보 실어서 보내기

값이 정상적으로 들어왔다.

이제 나머지 READ, UPDATE, DELETE도 구현해보자.

Read

router.get("/shoes", async (req,res) => {
    const [shoes] =  await Shoes.find({});

    res.json(shoes);  
});

DB안에 있는 품목이 조회된다.

일단 지금 안되는거
Read 품목이 하나밖에 안읽힘
db에서 update,delete 안됨

0개의 댓글