본문 바로가기

프로그래머스 데브코스

(62)
웹 풀사이클 데브코스 TIL 36일차 장바구니 cartItems 컬럼에 user_id를 추가해준다. Table cartItems { id integer [primary key] book_id integer quantity integer user_id integer } errno: 121 "Duplicate key on write or update" 제약조건 이름이 겹쳐서 생기는 문제 제약 조건의 이름을 규칙성 있게 지어줘야한다. fk_기준 테이블명_참조테이블명_참조키 cartItems.user_id > users.id : fk_cartItems_users_id likes.user_id > users.id : fk_likes_users_id 중복된 인덱스 이름 제약 조건 이름 문제를 해결했더니 또 다른 문제가 생겼다. 이번엔 인덱스 이름이 겹..
웹 풀사이클 데브코스 TIL 35일차 좋아요 좋아요 테이블은 user_id, liked_book_id 두 개의 컬럼으로 이루어진다. INSERT INTO likes (user_id, liked_book_id) VALUES (1, 1) DELETE FROM likes WHERE user_id = 1 AND liked_book_id = 1; 좋아요 추가 삭제 예시이다. COUNT 원하는 결과값들의 갯수를 얻는 방법이 있다. SELECT count(*) FROM likes WHERE liked_book_id = 1; 서브 쿼리 쿼리 문 안에 또다른 쿼리문을 넣는 방법이 있다. SELECT *, (SELECT count(*) FROM likes WHERE liked_book_id = books.id )AS likes FROM books; 이와 같이..
웹 풀사이클 데브코스 TIL 34일차 SELECT 컬럼명 변경 SELECT name AS category_name FROM categories; 이와 같이 AS를 활용해 원하는 이름으로 컬럼을 변경해줄 수 있다. name -> category_name 외래키 설정과 조인 books 테이블과 categories 테이블의 FK 설정을 해주었고 LEFT JOIN을 통해 카테고리 이름을 함께 얻어올 수 있게되었다. SELECT * FROM Bookshop.books LEFT JOIN categories ON books.category_id = categories.id; `'1','어린왕자들','7','0','종이책','0','어리다...','..
웹 풀사이클 데브코스 TIL 33일차 SQL 관리 프로젝트에서 sql등을 따로 정리해 놓고 싶다면 다음과 같이 data.sql 파일을 하나 만들어서 사용하면 된다. picsum 더미 이미지를 제공하는 사이트. https://picsum.photos/ https://picsum.photos/id/1/200/300 이와같이 간단한 URL로 이미지를 가져올 수 있다. 쿼리 스트링과 일반 요청이 같은 url을 사용할 때 router.get('/', allBooks) router.get('/:id', bookDetail) router.get('/', booksByCategory) books 라우터를 보면 한가지 문제점이 있다. allBooks와 booksByCategory가 같은 URL을 사용하고 있는 것이..
웹 풀사이클 데브코스 TIL 32일차 http-status-codes npm 모듈로 http 상태 코드를 문자형식으로 사용할 수 있다. https://www.npmjs.com/package/http-status-codes const {StatusCodes} = require('http-status-codes') if(err) { console.log(err); return res.status(StatusCodes.BAD_REQUEST).end(); } res.status(StatusCodes.CREATED).json(results); 사용 예시 코드이다. node.js 패키지(파일) 구조 app.js: 프로젝트의 메인 라우터 역할 users.js: 하위 라우터 역할 books.js: 하위 라우터 역할 라우터가 로직까지 다 수행..
웹 풀사이클 데브코스 회고록 12월 두번째 회고록 웹 풀사이클 데브코스의 두번째 회고록이다. 국비지원교육이 시작된지 두달 차이지만 정말 많은것들을 배운 것 같다. 도서지원 첫번째 책 프로그래머스 데브코스에서는 도서를 지원해준다. 나는 이번에는 자바스크립트에 대한 이해를 위해 "모던 자바스크립트 Deep Dive" 라는 책을 신청하였다. 정말 두꺼운 책이었고 많은 내용이 들어있는 것 같다. 전부 다 읽어보진 않고 필요한 내용들을 그때그때 찾아보면서 보고 있지만 나름 유용한 도서인 것 같다. 앞으로 계속 이 책을 학습해 나가며 자바스크립트에 대한 이해도를 끌어올리는 것이 목표이다. 백엔드 기본, 심화학습 이번달에는 본격적인 백엔드 학습에 들어갔다. 백엔드 기본지식 REST API, URL, HTTP 등의 백엔드 및 웹 기본지식에 대하여 학습하..
웹 풀사이클 데브코스 TIL 31일차 Express-generator 구조 bin/www 포트넘버, 에러 등등 웹 서버를 구축하는데에 필요한 설정 데이터가 정의되어 있음 => .env 파일과 같이 설정 값을 가지고 에러 처리, 기타 추가 설정을 해주는 파일 node_modules Node.js, Express 에 필요한 모듈들이 설치되는 폴더 public images, javascripts, stylesheets -> 정적 파일(ex. 로고, 회사 소개) routes app.js 서버의 시작점에서 URL에 따라서 각 경로를 담당하는 모듈들이 들어있는 폴더. 라우팅 로직을 구현하는 모듈들 클라이언트에서 어떤 요청을 주느냐에 따라서 어떤 로직을 수행할 지 파일별로 분할 해서 관리하는 정도(cf. 자바의 controller 역할) views 클라..
웹 풀사이클 데브코스 TIL 30일차 dbdiagram.io 데이터베이스 ERD 설계를 위해 dbdiagram.io 라는 사이트를 이용하였다. https://dbdiagram.io/d 좋아요 ERD 좋아요는 새로 테이블을 만들어서 관리한다. Table likes { user_id integer liked_book_id integer } 좋아요 누른 유저 아이디와 눌려진 책 아이디를 한꺼번에 관리하면 된다. 이렇게 하면 따로 books table에 좋아요 숫자를 가지고 있지 않고 그때 그때 집계함수로 계산할 수 있다. 장바구니 ERD Table cartItems { id integer bookId integer count integer } 장바구니는 ERD를 그릴 때 cartitems 라는 테이블로 만든다. 컬럼은 bookId와 count 가..