2013-07-04 40 views
7

Tôi đã xây dựng một cơ sở dữ liệu với Node.jsMongoDB và tôi đang viết một ứng dụng Angular.js nên gọi trong các mục từ cơ sở dữ liệu của tôi, cũng như có thể viết trong các mục đó.Kết nối MongoDB với giao diện người dùng?

Tôi biết rằng có một số vấn đề bảo mật khi viết trực tiếp từ javascript vào cơ sở dữ liệu, nhưng tôi hoàn toàn mới đối với loại điều này. Hơn nữa, tôi không thể tìm thấy bất kỳ hướng dẫn nào về cách gửi dữ liệu từ MongoDB đến giao diện người dùng của tôi để tôi có thể thực sự sử dụng nó!

Làm cách nào để kết hợp cả hai? Trong Node.js, tôi đã sử dụng một hàm javascript require để tải trong cơ sở dữ liệu của tôi và đọc/ghi từ nó, nhưng tôi không thể tìm ra cách để thực hiện điều này trong trình duyệt. Trong node Tôi đã sử dụng mô-đun mongojs để kết nối hai với nhau, nhưng điều này không hoạt động trong ứng dụng Góc của tôi vì tôi không thể sử dụng require.

Câu hỏi chính là: Làm cách nào để tải trong MongoDB lên giao diện người dùng?

EDIT: Tôi nghĩ đây là câu hỏi cơ bản hơn về việc gọi MongoDB lên front-end, chứ không phải là góc cụ thể. Nếu tôi sai, hãy cho tôi biết.

+2

Tôi không chắc mình hiểu. Bạn muốn kết nối trực tiếp từ trình duyệt với cơ sở dữ liệu? Đây là một ý kiến ​​rất dở. Đó chính là lý do tại sao bạn muốn sử dụng NodeJS (hoặc bất kỳ máy chủ web nào khác): bạn tải dữ liệu từ DB sang WebServer và sau đó kết hợp nó vào HTML/JSON/bất kỳ định dạng nào bạn muốn và sau đó gửi nó đến trình duyệt qua HTTP. – freakish

+0

Bạn gặp sự cố gì khi yêu cầu mô-đun mongojs trên giao diện người dùng? Bạn sẽ cần một bộ nạp mô-đun như [RequireJS] (http://requirejs.org/). –

Trả lời

11

Câu trả lời ngắn: Bạn không thích.

Câu trả lời dài: MongoDB không được thiết kế để hiển thị dữ liệu trực tiếp cho khách hàng. Máy khách tương tác với ứng dụng trên máy chủ web - trong trường hợp của bạn được triển khai trong Node.js - và máy chủ web giao tiếp với cơ sở dữ liệu.

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

Điều này có nghĩa trong thực tế, rằng ứng dụng client javascript thực hiện trong trình duyệt người dùng gửi một yêu cầu đến Node.js (thông qua một yêu cầu trang bình thường, thông qua XMLHttpRequest qua Websockets hoặc một số phương pháp khác). Node.js chấp nhận yêu cầu này và sau đó liên lạc MongoDB cho dữ liệu cần thiết để thực hiện nó. Khi Node.js nhận được dữ liệu từ cơ sở dữ liệu, nó sử dụng nó để xây dựng đáp ứng và gửi nó cho máy khách.

Ứng dụng khách không nhận ra rằng máy chủ đã sử dụng cơ sở dữ liệu phụ trợ để đáp ứng yêu cầu.

Đề xuất học tập của tôi dành cho bạn là để cơ sở dữ liệu ra ngay bây giờ. Sử dụng angular.js để làm cho máy khách tải một số dữ liệu tĩnh từ ứng dụng máy chủ Node.js. Khi bạn làm việc này, hãy mở rộng phía máy chủ để lấy dữ liệu từ MongoDB.

+1

Tôi thực sự đã thực hiện đề xuất học tập của bạn rồi - ứng dụng AngularJS tôi đã viết tải dữ liệu qua JSON. Vấn đề là, tôi thực sự không hiểu (cũng như tôi đã không thể tìm thấy trong tìm kiếm khá rộng lớn của tôi) làm thế nào để liên kết lên DB để lối vào. Tôi rất vui khi sử dụng nút làm người trung gian, nhưng tôi chưa bao giờ thấy bất kỳ triển khai nào trong đó máy khách -> nút -> db. Bạn có thể đề xuất bất kỳ tài nguyên nào mà tôi có thể tìm hiểu thêm về điều này không? Tôi chủ yếu là một frontend dev vì vậy rất nhiều điều này là cách trên đầu của tôi. – Jascination

Các vấn đề liên quan