목록NodeJS (24)
개발공부일지
목차 1. WEBSOCKET 2. 브라우저에서 사용해보기 3. socket.io 사용해보기 1. WEBSOCKET - 주로 채팅, 좌석예매시스템에 사용되는 새로운 프로토콜 ws:// 을 사용한다. - 브라우저 websocket 내장객체가 있고, NodeJS에서는 ws를 사용 - 외부 라이브러리로 socket.io - server const WebSocket = require("ws"); const wss = new WebSocket.Server({port: 8080}); // 서버실행 == app.listen 과 같아 wss.on("connection", (ws) => { // console.log(ws); // client의 객체정보 접속하는것마다 생성될거임 ws.on("message", (chunk)..
목차 1. multer 2. axios 사용하여 파일 업로드 해보기 1. multer - input box에서 file로 첨부파일을 올리고 submit 했을때 요청바디가 달라져서 새로운 바디 파서를 장착해야한다. - BodyParser를 해주는 middleware로 'multer' 전송 npm install multer const multer = require("multer"); const upload = multer({ storage: multer.diskStorage({ destination: (req, file, done) => { done(null, "./uploads"); }, filename: (req, file, done) => { const ext = path.extname(file.ori..
목차 1. 인가코드 받기 2. 토큰 받기 3. 사용자 정보 가져오기 1. 인가코드 받기 GET https://kauth.kakao.com/oauth/authorize?client_id=값&redirect_uri=값&response_type=값 app.get("/auth/kakao/login", (req, res, next) => { try { const redirectURI = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${KAKAO_REDIRECT_URI}&response_type=code`; res.redirect(redirectURI); } catch (e) { next(e); } }); - 카카오 ..
목차 1. TDD 2. jest 3. 단위테스트 4. 통합테스트 5. module 1. TDD - 테스트 주도 개발 ( Test-Driven Development) - 코드를 작성하기 전에 해당 코드를 테스트하는 테스트 케이스를 작성하는 개발 방법론 2. Jest https://jestjs.io/docs/getting-started - meta가 만든 테스트 프레임워크로, 주로 TDD 및 단위 테스트에 사용 - jest는 테스트 작성을 쉽게 만들어주며, 코드의 품질을 높이고 버그를 예방하는 데 도움 npm init -y npm install -D jest npm install express - package.json 에서 수정 "scripts": { "test": "jest", "start": "node..
목차 1. 설정하기 2. Sequelize 사용 3. DTO 4. create 1. 설정하기 - 드라이버 설치하기 npm init -y npm install express cors sequelize mysql2 dotenv - index.js / app.js / route.js - user → user.route / user.controller / user.service - constants → db / index → entity → user.entity - dto.js → user.dto 2. Sequelize 사용 - entity.js 파일에서 db와 connection (dotenv를 사용해서) - user.entity.js 파일에서 sequelize.define() 필드와 속성 지정 3. DTO ..
목차 1. ORM 2. Sequelize 3. create (INSERT queries) 4. findAll (SELECT queries) 5. findOne 6. update (UPDATE queries) 7. destroy (DELETE queries) 1. ORM - Object Relational Mapping - 데이터 관리 주고받을때 '객체'로 데이터베이스 관리하는 데이터는 '테이블' - 객체와 테이블을 객체지향으로 사용하기위한 라이브러리 → 웹서버 안에서 DB내용을 조작하기 위한! → mysql2를 사용해도 가능은 했지만 (통신을 위한것이라서) - CRUD를 위한 코드와 테이블이 추상화 되어있다 - 메서드던지 함수던지 인자를 넘길때 객체를 주로 넘기는데 그 객체가 어떻게 만들어진건지 확인해야..
목차 1. 회원가입 만들기 2. RESTful API 명세 3. 예외처리 1. 회원가입 만들기 - front - form element에 submit eventListener해서 유저의 정보를 객체에 담고 - axios를 사용해서 유저 정보를 바디에 담아 POST 요청을 한다. → localhost:4000/users - 가입이 된다면 / 으로 돌아가게하고, 가입이 되지 않는다면 aletr으로 Error Message를 알려준다. - back - DB연결 npm install mysql2 - database, table(users) 생성하고 pool connection을 한다. - app.post('/users')에서 DB에 INSERT를하고 받은 결과물을 SELECT(유저의 아이디, 이름만) 로 다시 ..
목차 1. Front-end 구현 2. Back-end 구현 3. CORS Error >> 간단하게 로그인 구현하기
목차 1. 의존성 주입 (DI) 2. 제어의 역전(IoC) 3. 오버라이딩 (overriding) 4. 오버로딩 (overloading) 1. 의존성 주입 (DI) - 자원을 효율적으로 사용하여 확장성 있게 코드를 작성할 수 있다. - MVC 계층으로 코드를 작성할때 하나의 service를 여러개의 controller가 사용해야할 경우 - 똑같은 코드인 service를 n번 사용하게 되어 비효율적이므로 ( 프로젝트했을때 board.controller, notice.controller 했던것처럼) - class를 만들고 module.exports로 내보내고 - module 파일을 만들어서 인스턴스를 생성만을 모아둔다. - 만들어둔 class의 인스턴스 생성을하면서 인자에 넣어 조립해준다. - 그걸 다른 파..
// src/index.js router.get("/", (req, res) => { // console.log(req.headers.cookie); res.render("index.html", { user: req.user }); }); 목차 1. 로그인 했을때 쿠키를 만들고 화면 다르게 보여주기 2. token 정보 증명하기 3. DB에 user_id 요청해서 로그인 구현 완성하기 1. 로그인 했을때 쿠키를 만들고 화면 다르게 보여주기 - user_id, user_pw를 쿠키안에 jwt토큰을 넣어주기 // src/user/user.servcie.js const userRepository = require("./user.repository"); const JWT = require("../../lib/..