na tak wiele wprowadzających przykładami zastosowania MongoDB, widzisz kodu:Prowadzenie otworzyć połączenie z bazą danych MongoDB
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
Jeśli MongoDB jest jak każdy inny system bazy danych, open
i close
operacje są zazwyczaj kosztowne czas mądry .
Więc moje pytanie brzmi: czy jest to OK, aby po prostu zrobić MongoClient.connect("...
raz przypisać zwracanej wartości do jakiegoś modułu globalnego db
, mają różne funkcje w module wykonać różne prace związane z bazą danych, (dokumenty wstawić do zbiorów, aktualizacja dokumenty itp.), gdy są wywoływane przez inne części aplikacji (i tym samym ponownie używają tej wartości db
), a następnie, gdy aplikacja zostanie wykonana, dopiero wtedy wykonaj close
.
Innymi słowy, open
i close
są wykonywane raz - nie za każdym razem, gdy trzeba przejść i wykonać operację związaną z bazą danych. I ponownie używasz tego obiektu db
, który został zwrócony podczas początkowego open\connect
, tylko po to, aby się go pozbyć na końcu, z close
, kiedy faktycznie skończysz z całą pracą związaną z bazą danych.
Oczywiście, ponieważ wszystkie operacje wejścia/wyjścia są asynchroniczne, przed close
należy upewnić się, że ostatnia operacja bazy danych została zakończona przed wydaniem close
. Wygląda na to, że powinno być OK, ale chciałem dokładnie sprawdzić, na wypadek, gdy czegoś mi brakuje, ponieważ jestem nowy w MongoDB. Dzięki!
Sprawdź również [to] (http://stackoverflow.com/questions/14495975/whyi-its-recommended-not-to-close-any-mongodb-connection-anywhere-in-node-js-code), może ci pomóc –
Interesujące ... Tak, pomocne; Dziękuję Ci bardzo! – Lew