Mongoose.js通过一次connect()调用创建到MongoDB的多个连接

Sah*_*bov 15 javascript mongoose mongodb node.js express

我在Node.js Express应用程序中通过Mongoose与MongoDB建立单一连接:

var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');
Run Code Online (Sandbox Code Playgroud)

然后我定义模式,然后是模型,最后是从数据库中提取所有用户的控制器:

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

这些数据库连接在应用程序启动期间打开,并在node.js应用程序的持续时间内保持打开状态.

困扰我的是为什么我有5个连接打开?一旦我关闭node.js应用程序,就会关闭所有5个连接. 在此输入图像描述

相关说明:对于REST API服务器,最好始终打开MongoDB连接.或者,根据每个用户请求手动打开/关闭连接是否更好?d

Joh*_*yHK 42

这是因为Mongoose使用在整个应用程序中共享的5个连接池(默认情况下).为了获得最佳性能,最好将它们打开.

您可以通过options参数更改默认行为mongoose.connect.例如:

mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections
Run Code Online (Sandbox Code Playgroud)