주문서 작성 > 주문 APIuser_id 있어야 한다.전체 ERD 테이블 생성 delivery, orders, orderedBook fk 컨벤션 정하고 플젝 시작하기!Ref: orders.delivery_id > delivery.idRef: orderedBook.order_id > orders.idRef: orderedBook.book_id > books.idRef: orders.user_id > users.id 주문 등록 INSERT, 주문된 상품은 DELETE{ items : [{ //orderedBook INSERT cartItemId : 장바구니 도서 id, bookId : 도서 id, quantity: 수량 }, { car..
웹 풀 사이클 데브코스
장바구니에 담겨있는 아이템 APIcartItems 테이블에서 user_id 값으로 식별 cartItems id(PK)book_id(FK)cntuser_id1111232132124 외래키 지정했던 제약조건에 한번 더 같은 이름으로 사용한다면? 충돌, 에러 발생[fk 제약조건 이름짓기]fk_기준 테이블명_참조테이블명_참조키cartItems.uer_id > users.id : fk_catrItems_users_idlikes.user_id > users.id : fk_likes_users_id 장바구니 담기 INSERTconst addToCart = (req, res) => { const { book_id, quantity, user_id } = req.body; let sql = "INSER..
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..
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..
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 ..
Cookie, 403`npm i cookie-parser` cookie-parserParse HTTP request cookies. Latest version: 1.4.6, last published: 2 years ago. Start using cookie-parser in your project by running `npm i cookie-parser`. There are 8759 other projects in the npm registry using cookie-parser.www.npmjs.comif (loginUser && loginUser.password == password) { const token = jwt.sign( { email: loginUser.ema..