CRUD 구현 및 express 에러 처리

2023. 10. 28. 20:38개발일지

CRUD??

Create, Read, Update 및 Delete의 약어인 CRUD 소프트웨어 개발 내에서 데이터 관리 및 조작에서 수행되는 네 가지 필수 작업을 나타난다. 이러한 작업은 데이터베이스 또는 데이터 스토리지 시스템과 상호 작용하는 대부분의 애플리케이션의 중추를 형성한다.

CRUD 작업의 구현은 종종 SQL 데이터베이스, NoSQL 데이터베이스 또는 RESTful API 와 같이 사용되는 기술 스택에 따라 다르다고 한다.

 

 

 

create

데이터베이스 또는 API와 같은 데이터 스토리지 시스템에 새 데이터 항목 또는 개체를 추가한다.

 

const ProductModel = require('../models/products.model');

async function createProduct(req, res, next) {
    try {
        const createdProduct = await productModel.create(req.body)
        res.status(201).json(createdProduct)
    }catch (err) {
        next(error)
    }
}
 
modul.exports = {
    createProduct
}

 

 

what is 201 created?????? 201 created는 무엇인가? 아래의 사진을 참고해보자.

 

 

 

 

product.router.js에서 이렇게 해준다.

 

 

 

Read?

데이터베이스 또는 API와 같은 스토리지 시스템에서 데이터를 검색하고 표시하는 데 필수적이다.

 

 

두가지 방법이 있다.

1. 전체 프로덕트를 가지고 오는 것!

 

 

 

2. 아이디를 이용해서 특정 프로덕트를 가지고 오는 것!

 

 

 

참고 사항!! 강의 사항에 나온 것 중에 모르는 부분 정리하고 알고 가기!

1) req.body

JSON 등의 바디 데이터를 담을때 사용한다.
주로 POST로 유저의 정보 또는 파일 업로드(formdata)를 보냈을 때 사용
요청 본문에 제출 된 키-값 데이터 쌍을 포함한다.

 

2) req.params

메소드에서 배열형태의 매개변수를 받을때 사용하는 키워드로, 여기는 라우터의 매개변수이다
예를 들어 /:id/:name 경로가 있으면 ":id"속성과 ":name"속성을 req.params.id, req.params.name으로 사용할 수 있다.

 

 

 

Update?

데이터베이스 또는 API와 같은 스토리지 시스템의 기존 데이터를 수정하는 역할을 한다.

 

 

new라는 옵션을 true라고 설정해주면 업데이트가 된 결과값이 반환이 되는 것이다.

 

 

Delete?

데이터베이스나 API와 같은 스토리지 시스템에서 데이터를 제거하는 역할을 한다.

 

 

 

 

express 에러 처리

 

*는어떠한경로를 넣든 여기로 온다는 의미다.

두번째 칸처럼만 한다면 서버 전체가 다운이 되므로, 4번째 칸처럼 4개의 인자를 들어가게 하여 첫 번째 미들웨어에서 발생한 에러 메시지를 이 곳에서 처리를 해주면 된다.

 

 

그러나 비동기 요청으로 인한 에러까지 이런식으로 처리를 하게 되면 에러 처리기에서 저런 에러 메시지를 받지 못하기 때문에 서버가 crash 되어 버린다.

 

 

 

그러므로 해결 방법으로는, next를 이용해서 강제로 보내줘야 한다.

 

 

 

위 사진처럼 next를 이용해서,

 

 

위에 사진에 있는 곳으로 강제적으 보내주면 문제 해결 할 수 있다.

 

 

그래서 이러한 경우도 마찬가지로, 에러를 next로 정한 이유는 비동기 요청에 대한 에러이기 때문에 next로 넣어서 처리를 해준 것이다.

 

 

 

음,, 봤는데도 잘 머리에 안들어온다,,, 그래두 어쩌겠어 이해될때까지 반복할 수 밖에,,, ㅋㅋ

파이팅 하자!!

'개발일지' 카테고리의 다른 글

TypeORM?  (0) 2023.10.30
ORM?  (0) 2023.10.30
Mongoose?  (1) 2023.10.27
개발일지  (0) 2023.10.27
SQL VS NoSQL  (0) 2023.10.24