response format 바꾸기
SQL 실행 결과의 pub_date 컬럼명을 pubDate로 바꿔준다.
delete 연산자는 객체에 있는 프로퍼티를 제거해 준다.
results.map(function (result) {
result.pubDate = result.pub_date;
delete result.pub_date;
})
mdn을 보면 위와 같은 설명이 있다. map()을 사용할 때 반환 값을 사용하지 않을 거면 forEach()나 for...of 루프를 사용하라는 말이다. 그래서 아래와 같이 작성했다.
results.forEach(result => {
result.pubDate = result.pub_date;
delete result.pub_date;
})
코드 퀄리티 높이기
데이터베이스 중복 코드
중복된 코드는 모듈화 한다.
예시로, UserController에서 CRUD 하는 부분을 User 파일로 분리해 낸다.
DB 모듈을 사용하면 코드가 더 간단해진다. DB 모듈에는 몽구스와 시퀄라이즈가 있다.
패키지 구조
- Router: 경로(URI, URL)와 HTTP method로 요청에 따른 경로를 찾아주는 역할을 한다.
- Controller: 요청을 받아들이고, 해야 할 일을 호출한다. 직접 일을 하지 않는다.
- Service: 비즈니스 로직 수행한다. 직접 일을 하며 쿼리를 부르는 일과 같은 것을 한다.
- Model: 데이터베이스와 소통한다. query들의 집합이다.
예외 처리(try...catch)
유효성 검사 추가
jwt 심화
로그인 시 access toekn(30m)과 refresh token(24h)을 발행하고, access token이 만료되기 직전에 로그인을 연장할 것인지 물어본다. access token은 로그인한 사람이어야 인증을 해주는 역할을 하고, refresh token은 로그인을 연장해주는 역할을 한다.
랜덤 데이터 생성 API
공식 사이트
설치
--save-dev는 개발할 때만 사용하고, 운영할 때는 사용하지 않겠다는 옵션이다.
npm i --save-dev @faker-js/faker
구현
원하는 사용자 수만큼 가짜 데이터를 만들어주는 API를 만들어보자.
url로 원하는 사용자 수를 입력받는다.
const express = require('express');
const app = express();
const { faker } = require('@faker-js/faker');
app.get('/fake/users/:id', (req, res) => {
const num = parseInt(req.params.id);
const users = [];
for (let i = 0; i < num; i++) {
users.push({
email: faker.internet.email(),
password: faker.internet.password(),
fullName: faker.person.fullName(),
contact: faker.phone.number()
})
}
res.status(201).json(users);
})
app.listen(3000);
'데브코스' 카테고리의 다른 글
[10주차 주간 발표] 동적 라우팅과 다익스트라 알고리즘 (0) | 2024.04.27 |
---|---|
[9주차 - DAY5] 프로그래밍과 C언어 (0) | 2024.04.26 |
[9주차 - DAY2] jwt 확인과 pagination (0) | 2024.04.23 |
제발 정렬 좀 시켜달라고 (0) | 2024.04.22 |
[9주차 - DAY1] jwt와 에러 처리 (0) | 2024.04.22 |