일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- dml
- 활동 킬로칼로리
- node
- node.js
- dql
- nodejs
- wecode
- 크로스핏
- github
- 월별 운동일지
- 홈트
- 위코드
- 메디패치
- code kata
- axios
- Udemy
- 달리기
- 드림코딩
- Til
- express
- JavaScript
- 습윤밴드
- 독서 리뷰
- 러닝
- 박스점프
- MySQL
- git
- SQL
- 걷기
- 운동일지
- Today
- Total
목록IT/TIL (45)
RISK IT
오늘은 크게 2가지를 했다. 프론트엔드와의 첫 통신 그리고 유저 회원가입에서 오류 디버깅이다. 프론트엔드와의 첫 통신 프론트엔드와 통신할 때, req.body에 프론트엔드 측에서 보내는 변수를 받아와야 했다. 나는 처음에 데이터베이스 스키마를 구현할 때, name, email, password, profileImage를 받아와야 했다. profileImage는 null 값이 들어가도 돼서 필수 요소는 아니었다. 그런데 name은 필수로 받아와야 하는 정보였기 때문에, 프론트에서 name을 보낼 수 있도록 logic을 추가하거나 백엔드에서 임시적으로 상수로 적용해야 했다. 우리는 name을 보내지 않는 것으로 결정했고 나는 임시적으로 상수 처리를 하려고 했는데 쉽게 되지가 않았다. 생각보다 간단했다. ⬇️..
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 { validat..
1. 레이어의 종류 (일반적으로) Presentation Layer 해당 시스템을 사용하는 사용자 혹은 클라이언트 시스템과 직접적으로 연결되는 부분 백엔드 API에서 엔드포인트 부분 API의 엔드포인트들을 정의하고 전송된 HTTP 요청(request)들을 읽어들이는 로직까지만 담당 Business Layer 실제 시스템이 구현해야 하는 로직들을 이 레이어에서 구현 (예시) 홈페이지 회원가입 엔드포인트에서 만일 비밀번호가 8자가 넘는지 확인하여 8자 미만이면 회원가입을 거부하는 로직 등 Persistence Layer 데이터베이스와 관련된 로직을 구현하는 부분 Business Layer에서 필요한 데이터 생성, 수정, 읽기 등을 처리하여 실제로 데이터베이스에서 데이터를 저장, 수정, 읽어 들이기를 하는 역..
추가된 부분 const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); bcrypt, jsonwebtoken 모듈 추가 app.post('/users/signup', async (req, res) => { const { name, email, password, profileImage } = req.body; const saltRounds = 12; const hashedPassword = await bcrypt.hash(password, saltRounds); await mysqlDataSource.query( `INSERT INTO users ( name, email, password, profile_image ) VALUES ( ?,..

1. Node.js Program Lifecycle Node.js 이벤트 루프는 작업이 남아 있는 한 계속해서 작동하는 루프 프로세스로 이벤트 리스너가 있는 한 계속 작동한다. 이는 서버가 계속 운영되기 위해서 제거하지 않아야 한다. 코어 노드 애플리케이션은 이 이벤트 루프에 의해서 관리된다. 사실상 모든 코드를 관리. Node.js는 서버 관리를 포함해 다양한 방면에서 event driven 접근 방법을 가진다.(ex. 데이터베이스 접근 시) Node.js가 이러한 패턴을 사용하는 이유는 단일 스레드 JavaScript를 실행하기 때문. 즉, 실행 중인 컴퓨터에서 전체 노드 프로세스가 하나의 스레드를 사용한다는 뜻 하지만 언젠가 이벤트 루프를 제거해야 한다면 process.exit() 사용 예시 con..