Во многих вводных примерах использования MongoDB вы видите такой код:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
Если MongoDB похож на любую другую систему баз данных, операции open
и close
обычно являются дорогостоящими по времени.
Итак, мой вопрос заключается в следующем: возможно ли просто сделать MongoClient.connect("...
один раз, присвоить возвращаемое значение db
некоторому модулю global, иметь различные функции в модуле, выполнять различные работы с базой данных (вставлять документы в коллекции, обновления документов и т.д.), когда они вызываются другими частями приложения (и тем самым повторно используют это значение db
), а затем, когда приложение выполняется, только затем выполните close
,
Другими словами, open
и close
выполняются один раз - не каждый раз, когда вам нужно идти и выполнять некоторые операции с базой данных. И вы продолжаете повторно использовать этот объект db
, который был возвращен во время начального open\connect
, только для того, чтобы избавиться от него в конце, с помощью close
, когда вы действительно выполняете всю свою работу с базой данных.
Очевидно, что поскольку все операции ввода/вывода асинхронны, перед close
вы должны убедиться, что последняя операция базы данных завершена до выпуска close
. Похоже, это должно быть хорошо, но я хотел дважды проверить на всякий случай, когда у меня что-то не хватает, поскольку я новичок в MongoDB. Спасибо!