관리 메뉴

아보카도 Blog

TIL 26일차: Node.js 숙련주차 시작, mongodb연결 및 localhost 인식 오류, http 인증, 미들웨어, mongoose virtual (가상 프로퍼티) 본문

개발일지

TIL 26일차: Node.js 숙련주차 시작, mongodb연결 및 localhost 인식 오류, http 인증, 미들웨어, mongoose virtual (가상 프로퍼티)

수수 아보카도 2022. 12. 19. 19:49

1. mongodb연결 및 localhost 인식 오류

오늘은 Node.js 숙련주차를 시작했다.

입문주차 때 마주했던 문제와 같이, 몽고디비부터 연결이 안되었고...

일단 data라는 폴더 안에 db 만들고, 이 곳에 몽고디비를 생성했는데,

나는 이 폴더를 c드라이브가아닌 임의의 드라이브에 위치시켰기 때문에

경로가 꼬여서 몽고디비 연결이 원활하게 되지 않았던 것 같다.

이렇게 넣기

 

그리고 두 번째 오류는, 몽구스 서버 셀렉션 오류.

몽고 디비 연결 url을 localhost라고 할 때 인식을 못했다.

일단 localhost대신에 127.0.0.1을 입력하면 몽고디비 연결에 성공하긴 한다.

하지만 매번 이럴 수는 없는법... 문제 해결하려고 튜터님이랑 여러가지 시도를 해봤다.

 

시도1. localhost를 도메인 주소로 변경.

C:\Windows\System32\drivers\etc 이 폴더 안에 hosts파일을 메모장으로 실행한 후,

127.0.0.1 localhost 주석 처리 없애주기.

 

localhost를 도메인 주소로 변경하는 방법 (hosts 파일 변경)

< localhost를 도메인 주소로 변경하는 방법 > 1. C:\Windows\System32\drivers\etc 폴더 안에 hosts 파일을 메모장으로 실행시킨다. 2. 아래에 원하는 도메인 abc.co.kr 과 같이 입력한다. 3. Host name, Ports 를 변경한

cutebabypig15.tistory.com

 

이랬는데도 안되어서 시도2. 호스트 변경 후 즉시 적용안될 때

 

호스트 - host 파일 변경 후 즉시 적용 안될 때

호스트 변경 후 즉시 적용 안될 때 ▼원도우 검색해서 cmd 로 검색 ▼CMD 창에서 ipconfig /flushdns 해당 명령어를 실행해주면 즉시 적용 된다. 그래도 안될 경우에는 (크롬기준)▼크롬을 열고 아래 사

gocoder.tistory.com

코멘드 창에서 ipconfig /flushdns 치기.

그래도 안될 땐 chrome://net-internals/#dns

아래 주소를 크롬 url 입력창에 치고 들어간 후 dns에서 clear host cache 클릭.

 

뭐 나는 두 시도 다 안되어서 그냥 localhost대신에 127.0.0.1을 쓰기로 했다.

컴퓨터 재부팅 한다음에 몽고디비 잘 연결되나 확인, localhost로도 몽고디비 연결되나 확인,

그리고 api더 배워서 studio 3t에 실제로 todo-demo 데이터베이스가 잘 생성되는지 확인하기.

 

-> 해본 결과, localhost는 여전히 안되어서 127.0.0.1로 대신 쓰기로 했다.

그래도 mongo랑 연결이 잘 되어서 다행이다. 프로그램 삭제 및 재설치 안해도 되어서 굿굿

 

2. http 인증

http 인증

인증이란, 사용자가 누구인지 증명하는 작업이다. 예를 들면 아이디와 비밀번호 입력하는 로그인.

http 인증에 종류가 많다. 기본 인증, 다이제스트 인증, ssl 클라이언트 인증, 폼 베이스 인증.

그 중 기본 인증이 이루어지는 순서는 다음과 같다.

① 서버 -> 클라이언트 인증 요구 시

서버는 401 Unauthorized 응답과 함께 www-Authenticate 헤더를 기술해서 어디에서 어떻게 인증할지 설명한다.

② 클라이언트 -> 서버로 인증할 때

인코딩된 비밀번호 등의 파라미터를 Authorization 헤더에 담아서 요청한다.

③ 성공적으로 완료되면 정상적인 상태 코드를 반환한다.

추가적인 인증 알고리즘에 대한 정보를 Authorization-Info 헤더에 기술한다.

 

3. 미들웨어

미들웨어란, 서로 다른 애플리케이션이 서로 통신하는데 사용되는 소프트웨어이다.

게임개발, 전자, 소프트웨어 개발 등에서 사용된다.

 

우리가 다루는 소프트웨어 개발에서는,미들웨어가 서로 다른 소프트웨어 구성 요소를 다른 애플리케이션에 통합한다.미들웨어는 표준 API를 제공하여 구성요소에서 필요한 데이터의 입출력을 관리한다.개발자는 API를 사용하여 소프트웨어 구성요소에서 필요한 서비스를 요청한다.

 

미들웨어 작동법: 메시징 프레임워크

프런트엔드 애플리케이션과 백엔드 애플리케이션 간의 데이터 교환이 원활히 이루어지도록 한다.공통 프레임워크로는 JSON, REST API, XML, 웹서비스, SOAP (단순 객체 접근 프로토콜)이 있다.

 

미들웨어 예시

웹 사이트에서 양식 제출하면, 컴퓨터는 XML이나 JSON 형식의 요청을 웹 서버에 전송한다.웹 서버는 요청에 기반하여 비즈니스 로직을 실행하고, DB에서 정보를 검색하거나서로 다른 프로토콜을 사용하여 다른 마이크로서비스와 통신한다.

 

미들웨어

 

미들웨어란 무엇인가? - 미들웨어 설명 - AWS

미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어입니다. 미들웨어는 더욱 빠르게 혁신할 수 있도록 애플리케이션을 지능적이고 효율적으로 연결하는 기능을 제공

aws.amazon.com

 

4. mongoose의 virtual model (가상 프로퍼티)

virtual model이란, collection에 정의되지 않은 field지만 정의된 field처럼 사용할 수 있게 하는 기능이다.

virtual key를 이용해 schema에 포함되지 않은 키를 설정하고, function을 통해 활용할 수 있다.

 

 

node.js mongoose에서의 virtual model

mongoose 에서의 virtual model 에 대해서 알아보자. virtual model 이란 collection에 정의 되지 않은 filed 이지만 정의된 field 처럼 사용할 수 있게 하는 기능이다. 예를 들어 다음과 같이 스키마를 정의하고

kjhweb.tistory.com

 

Mongoose 가상 프로퍼티 - Blog by saegeullee

Mongoose 가상 프로퍼티 유데미 NODE.JS 수업을 듣고 정리한 내용입니다. 가상 프로퍼티 가상 프로퍼티는 말 그대로 실제로 데이터베이스에 저장되지 않고 가상으로 띄우는 프로퍼티라는 의미로 몽

saegeullee.github.io