[Node.js] node.js에서 CRUD기능 구현하기

2023. 2. 6. 13:37·Node.js
목차
  1. create 기능 구현하기
  2. Read 기능 구현하기
  3. Update 기능 구현하기
  4. Delete 기능 구현하기
728x90
반응형

create 기능 구현하기

파일 분리를 위해 routes 폴더를 만들고 그 안에 register.js라는 파일을 만들어 넣는다.

router.post('/', (req, res, next) => {
    
    models.Users.create({
        email: req.body.email, // 사용자로부터 입력 받은 email
        name: req.body.name, // 사용자로부터 입력 받은 name
    })
    .then((result) => { // 회원 가입 성공 시
      	res.send(result);
    })
    .catch((err) => { // 회원 가입 실패 시
				res.send(err);
    });
    
});

server.js에 라우터 사용을 위해 아래와 같은 코드를 작성해서 넣어준다.

app.use('/register', require('./routes/register'));

아직 프론트 부분을 제대로 구현하지 못해서 postman을 이용해서 데이터를 삽입해준다. 이는 url을 이용해서 들어가서 테이블에 데이터를 넣어준다. 이전에 port를 3001로 구현하였기에 localhost:3001/register을 넣어 post형식으로 값을 넣고, 이를 반환하는지 본다.

테스트
테스트
테스트 결과값
테스트 결과값

Read 기능 구현하기

Seqeulize를 이용해서 조회 기능을 구현할 때에는 findOne(), findAll() 등의 메서드를 이용한다.

  • findOne : 데이터 단일 조회 시 사용
  • findAll : 데이터 전체 조회 시 사용

1) findOne()을 이용한 단일 조회

router.get('/one', (req, res, next) => {
    models.Users.findOne({}) // {} 안에 조건을 추가할 수 있다.
    .then((user) => {
        res.status(200).json(user);
    });
});

위와 같이 코드를 정의하고 localhost:3000/register/one으로 GET 호출을 하면 Users 테이블의 제일 첫번째 데이터를 리턴으로 받을 수 있다.

데이터 반환
데이터 반환

2) findAll()을 이용한 전체 조회

findAll()을 이용하면 조건을 걸어서 해당 조건에 부합하는 모든 데이터를 가져오는 경우 사용되거나 특정 컬럼 전체를 가져올 때 사용된다. 여기서는 where절에 deleteAt이 null인 값만 가져오게 하였다.  localhost:3000/register/all로 GET 호출을 하여 데이터의 모든 값을 가져오게 하였다.

router.get('/all', (req, res, next) => {
    models.Users.findAll({
        where: { // where을 통해서 필터링된 데이터를 가져올 수 있다.
            deletedAt: null
        }
    })
    .then((user) => {
        res.status(200).json(user);
    });
});

데이터 반환
데이터 반환

반응형

3) 특정 컬럼의 데이터를 가져오는 경우

: 가져오고 싶은 특정 컬럼값만 지정하여 가져왔다.

router.get('/something', (req, res, next) => {
    models.Users.findAll({
        attributes: ['email', 'name'] 
// attributes를 사용하고 배열의 값에 리턴받을 컬럼명을 입력한다.
    })
    .then((user) => {
        res.status(200).json(user);
    });
});

Update 기능 구현하기

Seqeulize를 이용해서 수정 기능을 구현할 때에는 update() 메서드를 이용한다. 이 기능은 회원가입해서 나중에 회원정보수정하기 기능에서 사용할 수 있다.

router.patch("/change", (req, res, next) => {
  models.Users.update({ name: "uhee" }, { where: { name: "uheeking" } })
    .then((result) => {
      res.status(200).send();
      
    })
    .catch((err) => {
      res.send(err);
    });
    next();
});
  1. 첫번째 괄호 : 바꿀 데이터
  2. 두 번째 괄호 : 가져와서 바꿀 데이터의 조건

→ 테이블의 name 컬럼에서 uhee이라는 데이터를 uheeking으로 바꾼다.

Delete 기능 구현하기

Seqeulize를 이용해서 수정 기능을 구현할 때에는 destroy() 메서드를 이용한다. 조건을 주지 않을 경우 모든 데이터가 삭제될 수 있으므로 유의해야 한다.

router.delete("/del", (req, res, next) => {
  models.Users.destroy({where: {name: null}})
    .then((result) => {
      res.status(200).send();
    })
    .catch((err) => {
      res.send(err);
    });
    next();
});

update나 delete기능은 postman에서 확인이 안되므로 터미널 콘솔창이나 mysql에 들어가서 확인해야 한다.

에러발생한 화면
Error

이러한 오류가 떴을 경우는 미들웨어에서 req, res의 위치가 바뀌어서 뜨는 것이다. req가 먼저 오게 써줘야 한다.

 

참고한 사이트:

https://wonyoung2257.tistory.com/7?category=805961

 

728x90
반응형
  1. create 기능 구현하기
  2. Read 기능 구현하기
  3. Update 기능 구현하기
  4. Delete 기능 구현하기
'Node.js' 카테고리의 다른 글
  • [Node.js] passport로 로그인 구현하기
  • [Node.js] express 미들웨어(MiddleWare) 알아보기
  • [Node.js] Sequelize 사용하기
  • [Node.js] Connection Pool의 개념과 사용법
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking의 it로그안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • flutter
  • SSR
  • 티스토리챌린지
  • Kubernetes
  • AWS
  • React
  • NEXT
  • 도커
  • Create
  • next.js
  • 장고
  • Django
  • 리액트
  • Express
  • supabase
  • 넥스트
  • sequelize
  • mosquitto
  • MySQL
  • useEffect
  • Vue.js
  • Props
  • node.js
  • 노드
  • 쿠버네티스
  • firebase
  • error
  • 오블완
  • docker
  • 플러터

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[Node.js] node.js에서 CRUD기능 구현하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.