Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js通过一个connect()调用创建到MongoDB的多个连接_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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

Javascript js通过一个connect()调用创建到MongoDB的多个连接,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我正在通过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.fi

我正在通过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);
    }
  });
});
这些DB连接在应用程序启动期间打开,并在node.js应用程序期间保持打开状态

困扰我的是为什么我有5个连接打开?一旦我关闭node.js应用程序,所有5个连接都将关闭。

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

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

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

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

添加此if语句以仅在mongoose断开连接时检查,请尝试连接它

if (Mongoose.connection.readyState === 0)
       mongoose.connect('localhost', 'test');
readyState包含以下类型:

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

感谢您的回答,当我试图弄明白为什么它一次打开5个连接时,我都快发疯了。@Benny mongodb服务器能够同时处理多个请求,尤其是读取请求(当服务器有多个副本时,这种能力更可用)。但是,一个连接只负责一个请求