본문 바로가기

T.I.L

(28)
23-08-03 forEach와 비동기 문제설명 req.body에서 받아온 객체의 데이터를 배열화 한 다음에 forEach로 데이터베이스와 body의 데이터가 유효한지 검증하는 로직을 설정했다. 하지만 에러가 발생했고 console.log로 forEach의 인자를 찍어보았다. 그리고 Promise {pending}이라는 결과를 얻었다. 시도 forEach는 배열의 모든 요소마다 설정한 로직을 수행하는 기능이다. 여기서 중요한 점은 forEach는 로직을 수행하기만 할 뿐 각 로직에 대한 결과의 출력을 기다리지 않는다. 그래서 가장 먼저 시작한 로직이 가장 늦게 될 수도 있는 것이고 나중에 시작된 로직이 먼저 결과를 출력할 수도 있는 것이다. 즉 forEach는 비동기적 함수라는 의미이다. Promise {pending}은 로직의 진행 순서를 ..
23-07-31 Error.captureStackTrace()/오류 해결한 과정 문제설명 계층화 아키텍쳐의 구조에서 에러가 발생한다면 status:400과 errorMessage를 보내도록 핸들링했다. 하지만 처음보는 에러가 발생했다. Error.captureStackTrace() 지금까지 겪었던 에러는 할당을 제대로 안해서 undefined가 나오거나 객체을 잘 못 지정했거나 타입을 착각했을 때의 오류였고 에러메세지에는 어떤 부분이 에러인지 잘 나와있었지만 Error.captureStackTrace()의 메세지는 노드 모듈에서부터 기인된 것 인지 어떤 부분이 잘 못 되었는지를 파악하기 힘들었다. 시도 일단 에러메세지를 차근차근 읽어 보았다. 그리고 역시 특정 코드의 위치를 알려주지 않았다. 모든 에러메세지는 노드모듈에서 기인되었다. 내 짰던 코드를 전반적으로 훓어 보는 것 보다는 ..
23-07-27 enum 사용하기 문제설명 models의 데이터 타입 중 하나인 enum, 열거형데이터로써 설정된 값의 데이터를 찾는데 용이하게 하는 데이터 타입이다. 타입을 설정하는 것 까지는 좋았지만 막상 데이터를 넣으려고 하니까 어떤 식으로 넣어야 하는지 잘 모르겠다. 시도 일단 한번 넣어봤다. req.body에 {"type":"커피"}를 넣어서 mysql에 저장해봤다. 확인한 결과 type의 필드에는 아무런 데이터가 들어가지지 않았다. {"type":"coffee"},{"type":"COFFEE"} 두개를 더 넣어보았다. 그러자 type의 필드에COFFEE라는 값이 들어가 있었다. 해결 models에서 데이터 타입을 설정할 때 대문자로 COFFEE라는 값을 넣어줘서 그런건지 확인하기 위해서 소문자로 바꿔보았다. type: { ty..
23-07-25 .env의 위치/enum의 설정 문제설명 서버와 연결을 시도할 때마다 .There is no value in Process variable라는 에러가 나왔다. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 위의 연결을 해결하고 또 서버를 연결하는데 Values for ENUM have not been defined라는 에러가 나왔다. 시도 config의 코드에서 에러를 캐치하는 코드이다. function getValue(key, defaultValue = undefined) { const value = process.env[key] ||..
23-07-20 restful한 계층형 아키텍쳐의 구조 문제설명 [내배캠]node.js의 심화 주차 lv.5에서 내가 설계한 아키텍쳐의 구조가 restful하지 않다는 얘기를 들었다. restful이란 얘기는 들어봤지만 막상 코드를 작성하면서 내가 정말 restful하게 코드를 짜려고 구상을 했었는지, 그것이 올바른 방향성인지, 내가 정말 restful한 코드가 무엇인지, restful의 개념을 알고 있었는지 되짚어 볼 수 있었다. 그리고 이번 과제를 통해서 기능 구현 뿐만 아니라 코드 자체의 짜임새를 restful하게 설계하려한다. 시도 예전의 시청했던 강의, 그리고 과제 리뷰 등을 통해서 restful api의 설명을 들었지만 다시한번 되짚어 보았다. REST는 클라이언트와 서버의 통신 방식 REST API는 REST의 아키텍쳐의 스타일에 따른 api다...
23-07-18 js와 html의 연동 문제설명 지금까지 만든 CRUD의 코드는 js파일에서 작성이 됐다. 웹개발은 js는 동작 html은 뼈대 css는 꾸미기로 구성되어 있다. 동작을 할 뼈대, html을 작성하고 js의 코드와 연동해야 한다. 시도 회원가입 Regist 회원가입의 post는 Email, Password, confirm, decreption, nickname의 데이터를 body에서 받아야 한다. 먼저 input값을 넣을 수 있게 input속성을 넣어주고, 값을 가져오기 위해서 id값을 부여해준다. js와 연결해야하기 때문에 코드를 넣었다. src로 연결할 js파일의 경로를 설정한다. registUser.js는 querySelector로 input한 id를 지정해서 값을 가져오고 addEventListener("click", ..
23-07-13 계층형 아키텍쳐의 매게변수가 1개만 들어가는 경우 문제설명 controllers에서 services로 매개변수를 보내고 싶다. likePost = async (req, res) => { const { postId } = req.params; const { userId } = res.locals.user; }; postId와 userId를 매개변수로 해서 services로 보내고 repositoties에서 데이터를 받아서 결과값을 controllers에서 res해야 했는데 자꾸 userId가 undifined가 나왔다. 시도 천천히 repositoties부터 services까지 userId가 제대로 전달이 됐는지 console.log로 확인했다. 그리고 userId가 undifined가 나왔다. 이를 통해서 controllers에서 뭔가 실수를 했기 때문..
23-07-12 throw 문으로 에러 지정하기 문제설명 계층형 아키텍쳐를 설계하는 중 if의 결과인 return을 통해서 코드를 빠져나오고 싶다. 예전까지는 return res.status(400)을 통해서 빠져나왔지만 계층형 아키텍쳐의 service는 req,res를 사용하지 않는다. 그래서 다른 방식으로 진행 중인 코드를 빠져나와야 한다. 시도 계층형 아키텍쳐가 설계된 코드를 찾아보았다. 그 중 하나의 예시에서 if의 조건을 throw new Error이라는 문법을 사용했다.처음보는 문법이기 때문에 검색해서 공부해보았다. throw문은 사용자가 직접 지정하는 예외라고 볼 수 있다. 그리고 그 예외가 발생하면 함수가 중지되는 기능을 한다. 마치 if 반복문의 break와 비슷한 역할을 한다고 생각했다. 해결 문법은 간단했다. 예전의 if문은 if ..