2013-12-12 16 views
8

Tôi đang sử dụng trình điều khiển mongodb và nhà sư trên nút. Ví dụ như this mà tôi thấy trên web có mô hình sau:Trình điều khiển và trình điều khiển MongoDB node.js và monk

var mongo = require('mongodb'); 
var monk = require('monk'); 

var db = monk('localhost:27017/userdb'); 
var collection = db.get('users'); 
collection.find({}, function(err, docs) { 
    // do something with docs 
}); 

Hai câu hỏi:

  1. Tại sao dòng đầu tiên cần thiết: var Mongo = require ('MongoDB')? Biến mongo không bao giờ được sử dụng. Sẽ không phải nhà sư tự động yêu cầu mongodb?
  2. Tôi thấy ở cấp trình điều khiển, db phải được mở và đóng. Những phương pháp này dường như không tồn tại ở cấp độ nhà sư. Nhà sư có tự động mở và đóng các kết nối không? Cái này hoạt động ra sao?

Thực tế, tôi tự hỏi nhà sư cung cấp lợi thế nào khi sử dụng trình điều khiển trực tiếp. Tôi đọc danh sách các tính năng trong số monk docs, nhưng không thực sự hiểu được lợi ích.

Cảm ơn trước sự giúp đỡ của bạn.

Trả lời

4

Để trả lời một số chi tiết cụ thể, dựa trên trải nghiệm của riêng tôi:

1) Bạn đúng là biến mongodb không bắt buộc. Tôi không biết tại sao nó xuất hiện trong tất cả các hướng dẫn. Tuy nhiên, mongodb IS yêu cầu như là một phụ thuộc, bổ sung cho nhà sư.

2) Như bạn nghi ngờ, bạn cần gọi db.close(), nếu không kết nối vẫn mở. Điều này dường như không được ghi lại ở bất cứ đâu. Khi bạn làm theo hướng dẫn đó, bạn có thể thấy số lượng các kết nối mở đến mongodb địa phương của bạn đang phát triển.

Như bạn có thể đã đọc, mục tiêu của nhà sư là cung cấp một API thân thiện hơn trình điều khiển riêng của mongodb. Tôi không có đủ kinh nghiệm với nó để nói có hay không nó đạt được điều đó.

+0

cảm ơn bạn đã chia sẻ trải nghiệm của mình. – Naresh

+1

Về số 1 - bằng cách yêu cầu mongodb riêng biệt, bạn có quyền kiểm soát phiên bản của mongodb. Bạn có thể đang sử dụng phiên bản địa phương HOẶC toàn cầu của mongodb, bạn có thể đang sử dụng một phiên bản cũ hơn hoặc thậm chí là một phiên bản beta mới hơn. Nếu nhà sư yêu cầu mongo một mình, bạn sẽ không có quyền kiểm soát cài đặt hoặc phiên bản nào được sử dụng. –

+0

Có vẻ như bạn không nên lo lắng về việc đóng kết nối của mình. http://stackoverflow.com/questions/14495975/why-is-it-recommended-not-to-close-a-mongodb-connection-anywhere-in-node-js-code – reergymerej

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