Подтвердить что ты не робот

Mongoose.js создает несколько соединений с MongoDB с одного вызова connect()

Я делаю одно соединение с MongoDB через Mongoose в приложении Node.js Express:

var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');

Затем я определяю схему, затем модели и, наконец, контроллер, который вытаскивает всех пользователей из базы данных:

app.get('/users', function (req, res) {
  return User.find(function (err, users) {
    if (!err) {
      return res.send(users);
    }
  });
});

Эти подключения DB открываются во время запуска приложения, и они остаются открытыми в течение всего времени приложения Node.js.

Что меня беспокоит, почему у меня открыто 5 подключений? Как только я закрою приложение Node.js, все 5 соединений будут закрыты. enter image description here

Примечание по теме. Для сервера API REST лучше всегда открывать соединение MongoDB. Или лучше вручную открывать/закрывать соединения для каждого запроса пользователя? д

4b9b3361

Ответ 1

Это потому, что Mongoose использует пул из 5 подключений (по умолчанию), которые используются во всем приложении. Для лучшей производительности лучше всего оставить их открытыми.

Вы можете изменить поведение по умолчанию с помощью параметра options на mongoose.connect. Например:

mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections

Ответ 2

Добавьте этот оператор if, чтобы проверять только когда mongoose отключен, попробуйте подключить его

if (Mongoose.connection.readyState === 0)
       mongoose.connect('localhost', 'test');

readyState содержит эти типы:

0: disconnected
1: connected
2: connecting
3: disconnecting