반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 걷기
- code kata
- Til
- 러닝
- wecode
- 드림코딩
- SQL
- 독서 리뷰
- 크로스핏
- github
- 박스점프
- 메디패치
- 월별 운동일지
- express
- dml
- 운동일지
- nodejs
- axios
- 습윤밴드
- 달리기
- JavaScript
- 위코드
- node.js
- Udemy
- git
- dql
- MySQL
- node
- 활동 킬로칼로리
- 홈트
Archives
- Today
- Total
RISK IT
[TIL24_23.2.1.] [Javascript] 문법 정리 - const{}와 const 및 try {} catch (err) {} 본문
IT/TIL
[TIL24_23.2.1.] [Javascript] 문법 정리 - const{}와 const 및 try {} catch (err) {}
nomoremystery 2023. 2. 1. 17:49반응형
const {} 와 const의 차이
모듈 불러올 때 const foo = bar
와 const { foo } = bar
의 차이
- 경로의 입력이 다르다!
⬇️ 1. const { foo } = bar
const { validateToken } = require('../middlewares/auth');
router.post('/', validateToken, postController.createPost);
⬇️ postRouter.js
파일
const express = require('express');
const router = express.Router();
const postController = require('../controllers/postController');
const { validateToken } = require('../middlewares/auth');
router.post('/', validateToken, postController.createPost);
router.get('/', postController.getPosts);
router.get('/:userId', postController.getPostByUserId);
router.patch('/:postId/:userId', postController.updatePost);
router.delete('/:postId', postController.deletePost);
module.exports = {
router,
};
⬇️ 2. const foo = bar
const auth = require('../middlewares/auth');
router.post('/', auth.validateToken, postController.createPost);
⬇️ postRouter.js
파일
const express = require('express');
const router = express.Router();
const postController = require('../controllers/postController');
const auth = require('../middlewares/auth');
router.post('/', auth.validateToken, postController.createPost);
router.get('/', postController.getPosts);
router.get('/:userId', postController.getPostByUserId);
router.patch('/:postId/:userId', postController.updatePost);
router.delete('/:postId', postController.deletePost);
module.exports = {
router,
};
try {} catch (err) {}
📝 나의 예시 코드
const signUp = async (req, res) => {
try {
const { name, email, password, profileImage } = req.body;
if (!name || !email || !password) {
const err = new Error('⚠️ Key Error!');
err.code = 400;
throw err;
}
await userService.signUp(name, email, password, profileImage);
res.status(201).json({ message: 'createUser' });
} catch (error) {
return res.status(error.code).json({ message: error.message });
}
};
새로 배운 내용
1. http 상태 코드
const deletePost = async (req, res) => {
const { postId } = req.params;
await postService.deletePost(postId);
return res.status(200).json({ message: 'postDeleted' });
};
위의 코드에서 status(204)를 설정했더니, json 메세지 'postDeleted'가 출력되지 않았다. 상태 응답 코드가 204는 No Content이기 때문에 나오지 않았던 것이다. 다시 상태코드를 200으로 설정하니 메세지가 잘 출력되었다.
그 외에 내가 사용해본 상태 코드로는 200(OK), 201(Created), 400(Bad Request), 401(Unauthorized)
2. new Error
, throw
Error
생성자는 오류 객체를 생선한다.
내가 사용한 구문은 new Error(message)
이고 사람이 읽을 수 있는 오류 메시지를 담는다.
매개변수
추가할 수 있는 인자로는 new Error(message, fileName, lineNumber)
이 있다.
filename
: 생성할 Error 객체의 fileName 속성으로 설정할 값. 기본 값은 Error() 생성자를 호출한 파일의 이름이다.lineNumber
: 생성할 Error 객체의 lineNumber 속성으로 설정할 값. 기본 값은 Error() 생성자를 호출한 줄의 번호이다.
New의 사용
Error를 new 없이 함수로써 호출한 경우에도 Error 객체를 반환한다. 따라서 단순히 Error를 호출하기만 해도 new 키워드를 사용한 것과 같은 결과를 낳는다.
3. try {} catch(err) {}
구문
try...catch
문은 실행할 코드블럭을 표시하고 예외(exception)가 발생(throw)할 경우의 응답을 지정한다.
반응형
'IT > TIL' 카테고리의 다른 글
[TIL26_23.2.3.] [Javascript] 정규표현식 정리 (0) | 2023.02.03 |
---|---|
[TIL25_23.2.2.] [Node] 프론트엔드와의 첫 통신 & 유저 회원가입 오류 디버깅 (0) | 2023.02.03 |
[TIL23_23.1.31.] [Node] Layered Pattern 개념 정리 (0) | 2023.01.31 |
[TIL22_23.1.30.] [Node] "westagram" 인증 & 인가 (bcrypt, jwt 모듈) (0) | 2023.01.31 |
[TIL21_23.1.29.] [NodeJS] Node 라이프사이클, 요청 및 응답 (0) | 2023.01.29 |