Javascript js通过一个connect()调用创建到MongoDB的多个连接
我正在通过Node.js Express应用程序中的Mongoose与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
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服务器能够同时处理多个请求,尤其是读取请求(当服务器有多个副本时,这种能力更可用)。但是,一个连接只负责一个请求