오늘 배운 내용 📚 jwt를 이용하여 회원 인증 처리 도서 리스트의 pagination 👉 코드 바로 가기(미연결) 추가 정리 내용 📑 upsert문이란? MSA와 모놀리식 지난 수업에 이어서 기존에 작성한 코드들 중에 인증인가 시스템을 필요로 하는곳에 적용을 하는 시간을 가졌습니다. 그리고 수업을 통해서 기존에 갖고있던 생각을 다른 시선으로 접근할수 있게 됐습니다. 그 예시로 바로 상세 도서 조회에서 유저가 로그인 한경우에 liked가 표기되는 방식이었습니다. 이전에는 백엔드에서는 프론트로 정보를 전달할때 전부 동일하게 전달해주면 그 안에서 프론트가 조건에 맞게 화면을 보여주는거라 생각했습니다. 하지만 오늘 수업을 통해서 백엔드에서 조건을 걸고 프론트로 필요한것만 넘기면 프론트에서는 받은 데이터를 뿌리..
분류 전체보기
이전에 작성한 예외처리 글을 생각해 봅시다. 왜 예외처리를 하는 건가요? 바로 에러를 잡기 위해서입니다. 자바스크립트는 싱글스레드여서 에러가 발생하게 되면 서버가 죽는 경우를 많이 겪으실 텐데요. 그래서 우리가 마주할 다양한 에러 객체들과 어떤 방식으로 처리할 수 있는지 알아보도록 하겠습니다. new Error() 우리가 코드를 짜다보면 가장 많이 만나는 SyntaxError, TypeError, ReferenceError 이 삼대장 기억하시나요? 에러는 기본적으로 javascript에서 코드를 읽고 동작을 하게 됐을 때 문제가 생기면 내장 에러 객체를 이용하여 에러를 우리에게 보여주게 됩니다. 하지만 에러는 우리가 직접적으로 만들 수도 있는데요. 바로 에러 객체를 통해서 만들 수 있습니다. 에러객체는 ..
MySQL에서 데이터를 삭제하는 방법은 DELETE, DROP, TRUNCATE 이렇게 3가지가 존재합니다. 데이터를 삭제한다고 해서 같은 결과 값이 나오지 않는데요. 데이터 삭제를 했을 때 어떤 결과가 일어나는지 간략하게 설명해 보자면 1) DELETE : 데이터만 삭제( 단위 : 행 ), 테이블 존재 where절 사용 👉 특정 행만 삭제 가능 ⭐ auto_increment 초기화 X 2) DROP : 테이블 삭제, 테이블이 삭제가 되면서 전체 데이터도 삭제 3) TRUNCATE : 데이터만 삭제, 테이블 존재 WHERE절이 불가능 👉 테이블 안 데이터를 통으로 삭제 ⭐ auto_increment 초기화 O 삭제 방법 1) DELETE DELETE FROM 테이블명 WHERE 조건 = 조건값 2) DR..
오늘 배운 내용 📚 토큰을 이용하여 사용자 인증 시스템 개발 에러 객체 처리 👉 코드 보러 가기 추가 정리 내용 📑 에러 객체와 try catch 오늘 수업은 전체 적인 기능구현이 끝난 코드에 인증 처리를 하는 것이었습니다. 이전에는 필요한 곳에 Auth 미들웨어를 실행하는 방식으로 진행했던 게 생각나서 이번에도 미들웨어로 만들어서 인증처리를 해보았습니다. 모든 사이트에 인증이 필요한 건 아니지만 기본적으로 인증시스템을 이용하여 처리하고 싶은 부분이 있어서(ex. 로그인 인증이 되어있다면 로그인페이지 접근 시 잘못된 접근입니다. 경고 문구 보내기) 미들웨어를 app.use()를 통해 전체 적용을 하였는데 이때 문제가 발생했습니다. 토큰을 받아올 때 header에 jwt 토큰을 넣어서 테스트를 진행하였는데..
오늘 배운 내용 📚 database 비동기화 FOREIGN_KEY가 존재할 때 데이터 삭제 방법 DELETE, DROP, TRUNCATE 주문하기 완료 👉 코드 바로가기 추가 정리 내용 📑 반정규화 오늘 수업시간에는 database의 비동기화로 시작을 했습니다. database 연결 시에도 시간이 걸리기 때문에 동기 처리를 해주야 하기 때문입니다. 하지만 createConnection의 경우에는 계속 연결을 해야 해서 비동기를 동기처리 해주어야 하지만, createPool의 경우에는 한번 연결해 놓고 pool의 연결을 썼다 끊었다 할 수 있기 때문에 어떠한 이유로 연결을 하는지 궁금해서 공식사이트를 들어가 확인해 봤지만 만족하지 못하고 오히려 비동기 처리를 하기 위해서 조치한 코드 때문에 오히려 동작하지..
비동기가 발생하는 다양한 경우가 존재하지만 백엔드에서 가장 많이 접하는 비동기는 바로 query를 사용할 때입니다. 비동기로 처리를 하면 처리 속도가 빨라지니까 무조건 사용하는 게 좋을까요? 비동기처리를 한다고 해서 무조건 다 좋은 것만은 아닙니다. 왜냐하면 비동기 처리 시에도 문제점이 존재하기 때문이죠. 그렇다면 어떤 문제가 발생을 할까요? let data; setTimeout(()=>{ data = 10 },1000) let value = data * 10 console.log(value) 비동기 동작을 위해서 setTimeout을 이용하여 data값을 입력받고 그 값으로 value 값을 구하는 코드를 작성을 해보았습니다. 이때 우리가 예상하는 value 값은 얼마인가요? 100이라고 생각할 수 있는..
비동기가 발생하는 다양한 경우가 존재하지만 백엔드에서 가장 많이 접하는 비동기는 바로 query를 사용할 때입니다. 비동기로 처리를 하면 처리 속도가 빨라지니까 무조건 사용하는 게 좋을까요? 비동기처리를 한다고 해서 무조건 다 좋은 것만은 아닙니다. 왜냐하면 비동기 처리 시에도 문제점이 존재하기 때문이죠. 그렇다면 어떤 문제가 발생을 할까요? let data; setTimeout(()=>{ data = 10 },1000) let value = data * 10 console.log(value) 비동기 동작을 위해서 setTimeout을 이용하여 data값을 입력받고 그 값으로 value 값을 구하는 코드를 작성을 해보았습니다. 이때 우리가 예상하는 value 값은 얼마인가요? 100이라고 생각할 수 있는..
동기와 비동기 동기와 비동기 개념 동기 동기는 요청한 작업을 완료했는지를 확인하여 순차적으로 처리하는 것을 말합니다. 비동기 비동기는 요청한 작업을 완료했는지 확인하지 않고 비순차적으로 처리하는것을 말합니다. 동기와 비동기 처리 순서 동기 A,B,C 요청 👉 A → B → C로 순서대로 실행 예시) A영화 예매를 하기 위해 줄을 섰는데 A가 1장, B가 100장, C가 2장을 구매하려 한다. 이때 직원이 일처리를 어떻게 하는가? A는 한 장이라서 바로 티켓을 받을 수 있다. (B와 C는 한 장만큼 기다림) B는 백장이라서 백장의 예매 처리가 될 때까지 기다렸다가 백장 티켓을 받는다. (C는 백한장만 큼 기다림) C는 마지막으로 두장 처리가 된 후 티켓을 받는다. 즉 A, B, C 순차적으로 처리하기 때문..
오늘 배운 내용 📚 비동기 I/O 비동기 처리 Promise async/await 오늘 수업은 기본적으로 비동기와 비동기 처리에 대해서 진행이 됐습니다. 비동기와 동기의 차이점을 배우는걸로 끝나는게 아니라 추가적으로 블로킹과 논블로킹도 함께 찾아서 공부해보았는데요 블로킹과 논블로킹의 차이로 제어권이 있는지 여부로 파악하는것을 처음 알았고 그냥 다음 코드가 동작이 안되면 블로킹, 동작이 되면 논블로킹이라고 알고있던 제 자신을 살짝 돌아보는 계기가 됐던것같습니다. 그리고 사실 제가 찾아본것도 전부가 아닐거라 생각이 됩니다. 한번에 많은 정보를 넣을수 없으니 조금씩 조금씩 제가 이해한 만큼 정리중입니다. promise는 이전에 혼자 공부할때는 그렇게 머리에 안들어오더니 강사님이 설명을 해주시니 확실히 이해하기..