一尘不染

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

node.js

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

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);
    }
  });
});

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

让我困扰的是为什么我要打开5个连接?关闭node.js应用程序后,所有5个连接都将关闭。
在此处输入图片说明

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


阅读 232

收藏
2020-07-07

共1个答案

一尘不染

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

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

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