我在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
答案 0 :(得分:42)
这是因为Mongoose使用在整个应用程序中共享的5个连接池(默认情况下)。为了获得最佳性能,最好将它们打开。
您可以通过options参数将默认行为更改为mongoose.connect
。例如:
mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections
答案 1 :(得分:0)
添加此if语句以仅在猫鼬断开连接时检查,尝试连接它
if (Mongoose.connection.readyState === 0)
mongoose.connect('localhost', 'test');
readyState包含以下类型:
0: disconnected
1: connected
2: connecting
3: disconnecting