2013-12-12 14 views
8

Używam sterownika mongodb i mnicha na nodejs. Przykłady takie jak this że widzę w sieci mają następujący wzór:MongoDB sterownik node.js i mnich

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 
}); 

dwa pytania:

  1. Dlaczego pierwsza linia potrzebne: var Mongo = require ('MongoDB')? Zmienna mongo nigdy nie jest używana. Czy mnich automatycznie nie wymagałby mongody?
  2. Widzę na poziomie kierowcy, db musi być otwarty i zamknięty. Te metody nie wydają się istnieć na poziomie mnicha. Czy mnich automatycznie otwiera i zamyka połączenia? Jak to działa?

W gruncie rzeczy zastanawiam się, jaką przewagę ma mnich nad używaniem sterownika bezpośrednio. Przeczytałem listę funkcji w monk docs, ale tak naprawdę nie rozumiem korzyści.

Z góry dziękuję za pomoc.

Odpowiedz

4

Aby odpowiedzieć na niektóre specyfiki, na podstawie własnego doświadczenia:

1) Masz rację, że zmienna MongoDB nie jest wymagane. Nie wiem, dlaczego pojawia się we wszystkich tutorialach. Jednak mongodb jest wymagany jako zależność, dodatkowa dla mnicha.

2) Jak podejrzewasz, musisz wywołać db.close(), w przeciwnym razie połączenie pozostanie otwarte. To nie wydaje się być udokumentowane nigdzie. Kiedy będziesz postępować zgodnie z tym samouczkiem, zobaczysz rosnącą liczbę otwartych połączeń z twoją lokalną mongodą.

Jak już zapewne czytałeś, celem mnicha jest zapewnienie przyjaznego interfejsu API niż mongołowego sterownika. Nie mam wystarczającego doświadczenia, aby stwierdzić, czy to osiąga.

+0

dziękuję za podzielenie się wrażeniami. – Naresh

+1

Odnośnie # 1 - wymagając mongodb osobno, masz kontrolę nad wersją mongodb. Możliwe, że używasz lokalnej lub globalnej wersji mongodb, możesz używać starszej wersji lub nawet nowszej wersji beta. Jeśli mnich wymagałby mongo na własną rękę, nie miałbyś kontroli nad używaną instalacją lub wersją. –

+0

Wygląda na to, że nie powinieneś przejmować się zamykaniem połączenia. http://stackoverflow.com/questions/14495975/why-is-it-recommended-not-to-close-a-mongodb-connection-anywhere-in-node-js-code – reergymerej

Powiązane problemy