Во многих вводных примерах использования 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. Спасибо!