2013-07-04 3 views
7

Node.jsMongoDB으로 데이터베이스를 구축했으며 데이터베이스에 항목을 불러 들이고 해당 항목에 쓸 수있는 Angular.js 앱을 작성했습니다.MongoDB를 프론트 엔드에 연결 하시겠습니까?

자바 스크립트에서 데이터베이스에 직접 쓰는 데 몇 가지 보안 문제가 있음을 알고 있지만 완전히 이런 종류의 문제에 익숙합니다. 게다가 실제로 사용할 수 있도록 MongoDB에서 프런트 엔드로 데이터를 전송하는 방법에 대한 지침을 찾을 수 없습니다.

어떻게 서로 연결합니까? Node.js 있음, 내 데이터베이스에서로드 및 읽기/쓰기, 자바 스크립트 require 함수를 사용하고 있었지만 브라우저에서이 작업을 수행하는 방법을 알아낼 수 없습니다. node에서 mongojs 모듈을 사용하여이 두 모듈을 연결했지만 require을 사용할 수 없기 때문에이 모듈은 내 각도 앱에서 작동하지 않습니다.

주요 질문은 : MongoDB에서 프론트 엔드로 어떻게로드합니까?

EDIT : 이것은 MongoDB를 각도에 구애받지 않고 프론트 엔드로 호출하는 것에 대한 기본적인 질문입니다. 내가 틀렸다면 알려주세요.

+2

잘 모르겠습니다. 브라우저에서 데이터베이스로 직접 연결 하시겠습니까? ** ** 아주 나쁜 생각입니다. 이것이 바로 NodeJS (또는 다른 웹 서버)를 사용하려는 이유입니다. DB에서 WebServer로 데이터를로드 한 다음 거기에서 HTML/JSON/원하는 형식으로 결합한 다음 HTTP를 통해 브라우저로 보냅니다. – freakish

+0

프론트 엔드에서 mongojs 모듈을 요구하려고 할 때 어떤 문제점이 있습니까? [RequireJS] (http://requirejs.org/)와 같은 모듈 로더가 필요합니다. –

답변

11

짧은 대답 : 그렇지 않습니다.

긴 대답 : MongoDB는 클라이언트에 직접 데이터를 노출하도록 설계되지 않았습니다. 클라이언트는 웹 서버의 응용 프로그램과 상호 작용합니다 (귀하의 경우 Node.js에 구현되어 있음). 웹 서버는 데이터베이스와 통신합니다.

+---------+ +---------+ +---------+ 
|Browser | | Node.js | | MongoDB | 
|  ------->  | |   |  
|   | |   | |   | 
|   | |  ------->  | 
|   | |   | |   | 
|   | |   | |   | 
|   | |  <-------  |  
|   | |   | |   | 
|  <-------  | |   | 
|   | |   | |   | 
+---------+ +---------+ +---------+ 

이것은 사용자가 브라우저에서 실행되는 자바 클라이언트 애플리케이션 (WebSockets의 또는 몇몇 다른 방법을 통해 XMLHttpRequest의 통하여 정상적인 페이지 요청을 통해) Node.js를 요청을 전송하는, 실제로 의미한다. Node.js는이 요청을 받아 들여 MongoDB에 연락하여이를 이행하는 데 필요한 데이터를 얻는다. Node.js는 데이터베이스에서 데이터를 수신하면이를 사용하여 응답을 작성하고이를 클라이언트로 보냅니다.

클라이언트 응용 프로그램은 서버가 요청을 수행하기 위해 백엔드 데이터베이스를 사용했음을 인식하지 못합니다.

내 학습 권장 사항은 지금 데이터베이스를 그대로 사용하는 것입니다. angular.js를 사용하여 클라이언트가 Node.js 서버 응용 프로그램에서 일부 정적 데이터를로드하도록합니다. 이 작업이 끝나면 서버 측을 확장하여 MongoDB에서 데이터를 가져옵니다.

+1

저는 실제로 학습 권장 사항을 이미 완료했습니다. 제가 작성한 AngularJS 앱은 JSON을 통해 데이터로드를 작성했습니다. 문제는 DB를 프론트 엔드에 연결하는 방법을 이해하지 못한다는 것입니다 (또는 상당히 광범위한 검색에서 찾을 수 없었습니다). 나는 중개자로서 노드를 사용하게되어 기쁩니다. 그러나 클라이언트 -> 노드 -> db 어디에도 구현을 보지 못했습니다. 이 점에 대해 더 자세히 알 수있는 자료를 제안 해 주시겠습니까? 나는 주로 프론트 엔드 개발 그래서 많은 내 머리 위로 방법입니다. – Jascination

관련 문제