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

11) Nodejs - 백앤드 넓고 얕게 맛보기_정리_데이터 파일로 관리하기(출처 유튭 강의)★★★

by Downy_J 2023. 11. 1.
728x90
반응형
SMALL

DB를 만들거다

파일로 데이터를 관리 할거다

이거 겁나 신박하고 신기하다

 

방법을 알면 언제든 사용할것 같다

 

파일로 저장을 한다고? 어떻게?

요 부분 뜯어내서
databases 폴더 안에 users.json을 만들어
붙여 넣고 json 형식에 맞게 수정좀 해주자
이렇게 해당 필드에 대한 데이터들을 만들어 놨고
다시 UserStorage에서 users.json 파일에 접근을 하려면
파일에 접근할수있는 모듈인 fs를 불러와야 한다
이걸로 해당 파일에 접근 한번 해보자

로그인 쪽에 이렇게 fs모듈을 사용해 readFile()로 ./  현재경로의 package.json 을 한번 불러와 보자 어떻게 나오나
buffer 에 대한 결과가 나온
16진수로 이대로는 읽을수가 없다

이렇게 하면
JSON 파이를 불러올수 있구나르 확인
경로 수정 해서
데이터 확인
그럼 이제 저 블록씌워진거를 괄호 안으로 집어 넣고

다시 해보면...

안된다.. 왜?

User 클래스를 보자

저게 반환하는 값이 뭔지 한번 보자
로그인 버튼을 다시 눌러서 보면. .
아무것도 반환하는 값이 없다
UserStorage에서 userInfo 를 반환은 하는데 왜..?

userInfo 는 저 콜백 함수가 리턴 하는거지
fs.readFile 메서드가 리턴하는게 아니기 때문이다

Promise, async, await으로 비동기 최적화 시키
그거 쓰려면 저렇게 추가 해줘야 되고
이제 fs는 Promise를 반환 하게 된다

그렇다면 저기에 .then() 이라는걸 쓸수가 있다는거네?
해당 로직이 성공 했을때 .then() 이 움직이고
실패 했을때 catch()가 작동해서 에러를 잡을거
err은 catch()에서 잡는댔고
data는 그럼 then에서 로직이 돌겠

코드 정리 끝. . 

 


이렇게 readFile()메서드는 Promise를 부여 해줬으니

반환 해 줄수 있어졌음

userInfo를 출력해보면
아이디를 입력하고 출력하면
그에 해당하는 값들이 나오는걸 확인
따로 은닉화 해서 해당 코드만 분리해 만들어주고

반환해주는 값이 userInfo 기 때문에

여기서 return 값으로 바로 은닉화된 #getUserInfo()
메서드를 반환 해 준다.

받아온 data를 불러와야 하니까 data를 써주고
그에 맞는 id값도 같이 갖고와 준

코딩 할때 암묵적인 룰 같은게 있다

은닉화 된건 클래스의 최상위로 올려두는것

 

 

728x90