ERD, likes 테이블 생성Table likes{ user_id integer liked_book_id integer}Ref: likes.user_id > users.idRef: likes.liked_book_id > books.id외래키 엮어서 테이블 생성 좋아요 추가누가 좋아요 눌렀는지? 로그인 한 상태 확인 > 토큰값로그인 할때 받은 token > header *Authorization* : payload 값을 읽을 수 있다 > 사용자의 id를 읽을 수 있다.INSERT INTO likes (user_id, liked_book_id) VALUES (1, 1);const addLike = (req, res) => { const { id } = req.params; //book_id con..
분류 전체보기
☑️What I Learn.env 파일 aka 닷git, 오픈소스에 올리면 안되는 값 (포트, DB 접속 정보, API_KEY 등)dotenv 패키지를 사용하며, 환경변수 파일을 외부에 만들어 저장해서 소스코드 내에서 하드코딩하지 않고 사용한다.애플리케이션의 환경 설정 정보를 저장하는데 사용한다. 1. 환경 변수 저장DB_HOST=localhostDB_USER=rootDB_PASS=s1mpl3API_KEY=12345-abcde*환경변수 : os 에서 프로세스 생성할때 참조하는 변수. 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임 2. 보안 강화.gitignore 파일에 추가해 정보가 외부로 노출되는 것을 막는다. 3. 환경별 설정관리.env.development.env.test...
category 외래키설정하면 컬럼명 앞에 붉은색이 된다. SELECT 별칭, 요약정보ASSELECT name AS category_name FROM books LEFTJOIN category ON books.category_id = category_id; 업데이트ERD 다이어그램 books N : 1 category외래키 연결?Ref: books.category_id > category.id 코드 BookController.jslet sql = `SELECT * FROM books LEFT JOIN category ON books.category_id = category_id WHERE books.id = ?`; 출간기준 시간 범위 구하기MySQL시간 더하기DATE_ADD(기준일자, 간격INTERV..
ERD books//전체조회 + 개별 조회 + 카테고리Table books{ id integer [primary key] title varchar form varchar isbn varchar summary varchar detail longtext author varchar pages integer contents longtext price integer pub_date date}도서 등록 api가 없기 때문에 > DB에 insert 작업 해주어야 한다.작성한 sql 문은 vscode에 `data.sql` 파일 안에서 관리해주는 것이 좋다. 전체 도서 조회전체도서 목록에서는 도서의 상세정보를 요청하고, 필요한 데이터만 선별하여 프론트에서 구현하기.`통으로 정보 보내줌`+ 추후에 한번..
mariadb.js 로 코드와 db 연동//mysql 모듈 소환const mariadb = require("mysql2");//DB와 연결 통로 생성const connection = mariadb.createConnection({ hose: "localhost", user: "root", password: "rood", database: "Bookshop", dataStrings: true,});module.exports = connection; users.js 회원가입 api//회원가입router.post("/join", (req, res) => { const {email, password} = req.body; let sql = 'INSERT INTO users (email, passwo..
express-generator 구조- bin/www : 포트 번호 등과 같은 웹 서버를 구축하는데에 필요한 설정 데이터가 정의되어 있는 파일 > .env 파일과 같이 설정 값을 가지고 에러처리, 기타 추가 설정을 해주는 파일- node_modules : Node.js, Express에 필요한 모듈들이 설치되는 폴더- public : images, javascripts, stylesheet > 정적(로고, 회사 소개 페이지...) 파일 `프론트에서 사용`* 동적 : 사람마다 다른 데이터- routes : 각 경로를 담당하느 하위의 모듈들이 들어있는 폴더 = 라우팅 로직을 구현하는 모듈들 : 클라이언트에서 어떤 요청을 주냐에 따라서 어떤 로직을 수행할 지 파일별로 분할해서 관리하는 정도*자바 스프링의 co..
☑️ What I Learn미들웨어 배열콜백함수 이전 인자에 유효성 검사 및 요청 처리하기 위한 일반적인 패턴이다.각 배열 인자는 미들웨어 함수를 나타내며, 배열 작성 순으로 실행된다.마지막에는 반복되는 예외처리를 함수 `validateInput`로 추출하여 사용하였다.//예시 코드const express = require('express');const { body, validationResult } = require('express-validator');const app = express();// POST 요청을 처리하는 라우트 핸들러app.post('/user', [ body("userId").notEmpty().isInt().withMessage("숫자 입력 필요"), body("name..
ERD 다이어그램 + SQL 문 함께 보기 dbdiagram.io - Database Relationship Diagrams Design Tool dbdiagram.io ERDusers 테이블Table users{ id integer [primary key] email varchar password varchar}idusernamepasswordcreated_at1kim1111 2lee2222 3park3333 4chae4444 5jang5555 6kang6666 7song7777 books 테이블전체조회 + 개별 조회 + 카테고리Table books{ id integer [primary key] title varchar category varchar format varchar isbn ..
실무역량 과제 테스트 문제풀이를 기반으로 작성하였습니다.과제 풀이가 2시간이 주어졌는데, node.js 로 14문제를 2시간안에 풀기에는 아직 완벽하게 적응을 못한 것 같아서 아쉬웠다. 초반에 감잡는데 시간이 좀 걸려서 더 많이 익숙해 져야겠다. 조건req, res에 요구사항을 만족하는 내용을 전송하는 방식으로 문제풀이는 진행되었다.실제 데이터베이스를 사용하지 않아서 SQL문을 써보지 못한다는게 조금 아쉬웠지만, json 파일로 실제 db와 유사하게 주어졌다. 문제 1. 특정 년도 1999 이후 출판된 도서 목록 조회조회 GET 메서드 사용. 성공하면 json으로 해당 책 정보를 응답한다. 여러개의 책을 배열에 담아서 전달한다.JS 문법으로, 배열에서 조건에 해당하는 객체를 걸러내는 메서드 `filter..