본문 바로가기
Back-End Frameworks/Node.js

8) Nodejs - 백앤드 넓고 얕게 맛보기_정리_서버 응답받은 값 처리(출처 유튭 강의)

by Downy_J 2023. 10. 30.
728x90
반응형
SMALL

응답 값이 어디 있었지?

근데 얘는 어디의 뭔데?

login.ejs 파일에 연결된 js파일로 유저 입력값을 req에 담아
그걸 fetch를 사용해 JSON 값으로 담아 서버로 갖다주는거

여기 있었지?

그럼 서버에서 응답으로 res 해줄거 아님?

여기 메인으로 갖다 줘야 하니깐

 

 

 

 

 

응답의 success가 true 라면

위치 href 값을 '/' 메인으로 두고

false면 경고창으로 message를 띄워
성공하면 루트화면으로 가진다

이제 보니 에커 캐치가 없네?

한줄 만들어 주고

저건 어떨때 뜨는 에러인고 하니
여기 이렇게 라우팅 되는 경로만 없애보자고
그럼 이때 이렇게 에러 메세지가 뜬다

POST 할 경로도 없어 404에러가 뜨고
로그인중 에러가 났다고 나

모델 만들자 (겁나 신기함)

임의로 테스트하기 위해 만든 이

모델 데이터를

 

이제 모델을 만들어 써보도록 하자

그리고 꽤 신기한걸 할거라 잘 기록 해둬야 함

 

데이터를 가지고 있는 놈을 하나 만들거고

이런 데이터를 가지고 있는 놈 을 가지고 조작을 해서

저런 데이터를 로직을 처리 하는 놈 또 하나 만들거

 

그 전에

이런식으로 좀 더 깔끔하게 빼내버렸음

(와 이런식으로 코드 정리가 되네..)


 저 폴더랑 안에 파일 만들어서
class를 파일명과 동일하게 셋팅 해두고

모듈로 만들어 밖으로 꺼내 쓰게 해두자
그리고 컨트롤러에 있던거 갖고오고
컨트롤러에서 저 모델의 값을 갖고오는지 부터 확인 ㄱ

로그인 버튼을 누르니 아주 잘 나오는걸 확인!

근데 또 신기한거

이렇게 그냥 모델에서 users를 다이렉트로 불러오는게 더 깔끔할수 있을거 같음
그런데 이대로는 불러 올수가 없음
static을 붙여 정적으로 만들어줘야
저 users 변수에 접근을 할 수 있게 된
불러오기가 된다

static을 붙이는 이유는 이렇다..

 

그런데 원래 이렇게 다이렉트로

UserStorage라는 내부 데이터users라는 변수로의 접근이

불가 하도록 설정을 해주는게 맞다

변수 은닉화

앞에 샵(#)을 붙임으로
public한 변수에서 private한 변수로
바꿔줄수 있다

이러면 외부에서 불러올수 없
이 상태로 서버 켜고 로그인 버튼 누르면
undefined가 뜨게된다

그런데 이러면 데이터를 받아 올수 읎잖아. .?

모델에서 값을 받아다가

컨트롤러에서 로그인 기능이 작동하게 

비즈니스 로직 처리를 해야 하는디?

getUsers() 라는 메서드를 하나 만들어줄건데
은닉화 된 private 변수인 #users 값을 리턴 해 줄거

그리고 class에 자체에서 접근을 하려면 당연히 static을 붙여 줘야 
컨트롤러에서 getUsers() 메서드를 호출 해주면
은닉화된 users가 나오게 된다

필드가 지금 id와 pw뿐이라 괜찮지만 만약 뭐 몇개 되면?

난 원하는 필드만 갖고오고 싶은데?

name 필드를 추가 했다고 하자
여서 id와 pw만 불러오고 싶다면?
여기 UserStorage로 가서

먼저 users에는 은닉화된 값이 들어가고

newUsers에는 저기 fields들(id,pw,name)이 들어가는데 reduce는

배열 같이럼 작동하는거라 한줄씩 갖고 올거임

그래서 저 은닉화된 users에 hasOwnProperty 메서드를 썻는데

이는 객체 내에 특정 속성이 존재하는지 검사하는 메서드로...

컨트롤러에서 id와 pw를 불러오라 했으니 이렇게

나오는 것이다

 

728x90