Когда закрывать соединение с MongoDB - PullRequest
0 голосов
/ 29 августа 2018

Для контекста я пишу приложение ExpressJS и использую драйвер узла MongoDB, mongodb.

Приложению потребуется время от времени быстро общаться с удаленной БД, в зависимости от того, как часто пользователи что-то делают. Я понимаю, что приложение не должно открывать и закрывать соединение каждый раз, когда ему нужны данные. Он должен подключиться один раз, и должна быть вещь с именем db, которую вы можете использовать для запроса, например: db.collection("users").find(...), и все будущие вызовы БД должны просто использовать эту переменную db.

Но если я разверну свое приложение, я предполагаю, что server.js просто выполняется один раз в начале жизни приложения. Это будет означать, что одно соединение устанавливается один раз за весь срок службы этого развертывания.

Но не истекает ли время этих соединений? Должен ли я просто проверить, что db var - открытое соединение, и, если нет, переподключиться перед совершением вызова?

Удивительно, но я не нашел много путеводителей, поэтому я не знаю верного пути, поэтому я спрашиваю здесь. Пожалуйста, дайте мне знать, если я смогу задать этот вопрос лучше.

1 Ответ

0 голосов
/ 29 августа 2018

Вам не нужно управлять соединением самостоятельно. Вызов MongoClient.connect идет с включенными батареями. См. документы : методы подключения включают autoReconnect (по умолчанию true), которое будет пытаться сохранить доступное соединение. У вас также есть poolSize (по умолчанию 5), чтобы дать клиенту (который вы можете сохранять и повторно использовать в своем приложении) возможность использовать более 1 соединения.

Добавление полного примера:

const { MongoClient } = require('mongodb');

const url = 'mongodb://localhost:27017';

MongoClient.connect(url)
    .then(client => runMyApp(client));

function runMyApp(client) {
    // Use client however you like e.g.
    client.db('users').find({})
        .then((results) => console.log(results));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...