2012-09-29 15 views
12

Sto facendo una singola connessione a MongoDB via Mongoose in Node.js espresso app:Mongoose.js crea connessioni multiple a MongoDB da un connect() chiamare

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

Ho poi definisco schema, seguito da modelli, e, infine, il controller che tira tutti gli utenti dal database:

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

Queste connessioni DB aperto durante l'applicazione si avvia e rimangono aperti per tutta la durata dell'applicazione node.js.

Ciò che mi dà fastidio è perché ho 5 connessioni aperte? Non appena chiudo l'app node.js, tutte e 5 le connessioni sono chiuse. enter image description here

nota correlate: Per un server REST API è meglio avere il collegamento MongoDB sempre aperto. O è meglio aprire/chiudere manualmente le connessioni per ogni richiesta utente? d

risposta

39

Questo perché Mongoose utilizza un pool di 5 connessioni (per impostazione predefinita) condivise in tutta l'applicazione. Per ottenere le migliori prestazioni, è meglio lasciarle aperte.

È possibile modificare il comportamento predefinito tramite il parametro opzioni su mongoose.connect. Ad esempio:

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

grazie. Mi chiedevo la stessa cosa. – chovy

+0

Fantastico, grazie per questa spiegazione :-)! –

+0

Grazie per questa risposta, stavo impazzendo cercando di capire perché continuava ad aprire 5 connessioni alla volta. – Benny

Problemi correlati