분류 전체보기 (88) 썸네일형 리스트형 프로젝트: Node.js 기반의 REST API 구현(12)-order.js-TRUNCATE, SET FOREIGN_KEY_CHECKS=0;, DELETE WHERE IN(); MySQL 데이터 삭제하는 방법1. DELETE테이블은 남아있고 조건에 해당하는 행이 삭제 (조건이 없으면 전체 행 삭제되니 조심🔥)DELETE FROM 테이블명 WHERE 조건; 2. DROP테이블 전체 삭제DROP TABLE 테이블명; 2. TRUNCATE테이블 초기화 후 구조와 인덱스는 그대로 남아있고 테이블 행 전체 삭제 (조건을 줄 수 없음)TRUNCATE 테이블명; 차이점DELETETRUNCATE동작방식행 단위로 삭제 (조건 줄 수 있음)테이블 전체 삭제 (조건 줄 수 없음)속도느림매우 빠름로그 기록각 행 삭제 기록테이블 초기화 기록만 남음트리거트리거 발생트리거 발생❌트리거를 통해 처리하는 경우 사용 제한트랜잭션 처리트랜잭션 내에서 사용가능, 롤백가능일부 시스템에서 트랙잭션 내 롤백 불가AU.. 프로젝트: Node.js 기반의 REST API 구현(11)-order.js-node.js 비동기(Promise 객체, async-await) ✨ver1의 설계로 DB, Node.js 코드 구현해보기node.js 비동기논 블로킹 I/O node.js 비동기 처리 방식-비동기 발생값이 나오는 시간을 기다리지않고 다음코드를 바로 실행함ex. setTimeOut(), setInterval(), query() -비동기 처리값이 나오는 시간을 기다렸다 다음 코드콜백함수promise (resolve, reject)then & catchES2017 promise => async & await❄️JS 데모 연습해보기promise-demo.jspromise-chain-demo.jsasync-demo.js 나는 원래 promise를 사용해서 보냈었는데강의를 듣다보니 import 할 때, promise로 불러올 수 있어서 수정했다.import { createCon.. 프로젝트: Node.js 기반의 REST API 구현(10)-order.js-LAST_INSERT_ID(), node.js-results.insertId, ✨ver1의 설계로 DB, Node.js 코드 구현해보기Table deliveryTable ordersTable orderedBook결제하기에서 설계한 API에서 약속된 DB를 생성해줬다. 🗝️방금 INSERT한 데이터 PK가져오는 방법❗❗✨LAST_INSERT_ID()SELECT LAST_INSERT_ID();장점단일세션에서 안전하다.세션별로 작동하기 때문에 동시성에 문제가 없다.여러 클라이언트가 동시에 레코드를 삽입하더라도 각 클라이언트마다의 id 값을 가지고 온다.복잡한 트랜잭션이나 쿼리없이 삽입한 레코드의 id값을 쉽게 가지고 올 수 있다.AUTO_INCREMENT 필드와 호환되므로 DB에서 자동으로 생성되는 값에 유용하다.특히 기본키나 참조무결성을 유지하는 상황에서 많이 사용된다.트랜잭션 내.. 프로젝트: Node.js 기반의 REST API 구현(9)-cart.js-FK 중복 컨벤션, SQL조건문 IN() ✨ver1의 설계로 DB, Node.js 코드 구현해보기cartItems의 테이블을 만들고 FK를 설정하는데 오류가 났다.💢errno: 121 "Duplicate key on write or update"지금 쓰거나 업데이트된 키가 중복이라는 내용의 에러가 떴다.FK name이 중복이라 뜬 에러인데 FK도 중복이 되면 안되는 것을 처음 알았다.❄️FK 제약조건 이름짓기fk_기준 테이블명_참조 테이블명_참조키 장바구니 선택조회장바구니 선택조회에서 나는 sql문을 잘 몰라서 result를 가지고와서 js로 filter를 사용하여내가 선택한 아이템만 보여주게 설정을 했는데, ✨sql에 IN이라는 문법이 있었다. cartController.js 프로젝트: Node.js 기반의 REST API 구현(8)-likes.js-COUNT(*), 서브쿼리, SELECT EXISTS(); ✨ver1의 설계로 DB, Node.js 코드 구현해보기일단 JWT로 받아오는 user_id를 body로 받아와서 구동이 되게 코드를 구현했다.💢JWT를 받아와 header Authoriztion의 user_id의 payload값을 읽어올 수 있게 고도화하기❗❗ ✨도서의 좋아요 COUNT(*)로 좋아요 갯수 계산하기SELECT COUNT(*) as liked FROM likes WHERE liked_book_id=${book_id}; 서브쿼리(sub qeury): 쿼리 안에 쿼리SELECT *,(SELECT COUNT(*) as liked FROM likes WHERE liked_book_id=books.id) AS likesFROM books;books에 있는 모든 컬럼과, likes로 AS한 컬럼을.. 프로젝트: Node.js 기반의 REST API 구현(7)-book.js-LEFT JOIN, DATE_ADD, DATE_SUB, LIMIT OFFSET ✨카테고리 연결하기(LEFT JOIN)join을 할 때 FK를 설정하지 않더라도 가능하다.하지만 무결성을 위해 FK를 하는것이 좋다고 한다.그리고 지금은 query()에서 템플릿문자열로 변수를 넣어주고 있는데,그렇게하면 SQL 인젝션의 위험성이 있다고 한다.따라서 파라미터화된 쿼리를 사용하는 것이 좋다고 한다❗⬇️⬇️⬇️⬇️⬇️⬇️⬇️const [result] = await conn.query('SELECT * FROM books WHERE id = ?', [book_id]); 🔥 SQL 데이터베이스 시간 범위 구하기시간 더하기DATE_ADD(기준날짜, INTERVAL) 시간 빼기DATE_SUB(기준날짜, INTERVAL) 최근 한 달이라는 기준으로 했을때,DATE_ADD에서 INTERVAL -1 MO.. 프로젝트: Node.js 기반의 REST API 구현(6)-books.js-method 동일 할 때 query || body || params의 값으로 조건문 판별해서 코드 실행시키기 ✨ver1의 설계로 DB, Node.js 코드 구현해보기BookController.js 이미지경로 컬럼 DB에 넣고 API로 뿌려주기참고사이트:https://picsum.photos/images Lorem PicsumLorem Ipsum... but for photospicsum.photos https://picsum.photos/id/1/200/300이 사이트에서의 활용법은, url은 고정이고 id값만 바뀌면 사진이 변경된다.그래서 우리는 DB에 int로 된 id값을 넣어주고 요청시 프론트로 값을 넘겨주면 된다. 이런 방법이 아니라면, 서버에 이미지 파일을 넣고, 그 경로를 DB에 넣어주고 요청시 프론트로 넘긴다.: 일단 서버가 있어야하고, 파일도 업로드 되어야하며,업로드 될때 그 경로를 DB에 넣어.. 프로젝트: Node.js 기반의 REST API 구현(5)-users.js-컨트롤러, crypto ✨ver1의 설계로 DB, Node.js 코드 구현해보기 Node.js 패키지(파일) 구조app.js는 프로젝트의 메인 라우터 역할routes안의 파일들은 하위 라우터 역할💢하지만 지금 파일 구조는 하위 라우터 안에서 경로역할 뿐만아니라 로직까지 구현되어있다.안되는건 아니지만, 파일 하나에 코드가 길어질수록 유지보수가 어려워지므로코드구현된 부분은 다른 파일로 나눠서 모듈화 시키는 것이 좋다❗💢🔸프로젝트 규모가 커질수록, 코드가 길고 복잡🔸가독성이 떨어짐🔸트러블 슈팅 어려움=> 유지보수가 어려움cf. 유지보수란? 오래된 코드 운영, 요구사한 반영, 에러해결 ... 컨트롤러프로젝트에서 매니저 역할을 하는 파일 ⬇️컨트롤러에 jwt sign으로 token을 cookie에 넣어 response로 보내.. 이전 1 ··· 4 5 6 7 8 9 10 11 다음