nodejs 中是否需要关闭 mongodb 连接?
Is it necessary to close mongodb connection in nodejs?
我是 nodejs 的新手 mongodb。在 mongodb 本机驱动程序网站中,他们会在每次请求后关闭连接,但在高流量网站中似乎非常缓慢且存在问题。我只是想知道是否有必要这样做,或者我可以声明一个全局变量并将其引用到数据库,如下所示:
var mongodbClient = require('mongodb').MongoClient;
var db;
function connect() {
mongodbClient.connect('connection string', function (err, mdb) {
db = mdb;
});
}
connect();
function insert(query, collection, fn) {
db.collection(collection)
.insert(query, function (er, da) {
fn(er, da);
});
}
function find(query, collection, fn) {
db.collection(collection)
.find(query).toArray(function (er, da) {
fn(er, da);
});
}
我不想使用 mongoose,我更喜欢学习和理解引擎盖下发生的事情。
文档中提供的示例实际上并不适合现实生活中的用例。如果您使用的是服务器框架,您通常可以连接到 mongo 并在整个应用程序中共享对连接的引用。我使用 hapi 并通过插件连接到服务器,该插件允许我存储句柄以打开连接。这允许您在服务器关闭时进行清理。它们有许多用于管理 mongo 的模块,例如 mongoose、waterline 或我最近编写的 wadofgum-mongodb。
我是 nodejs 的新手 mongodb。在 mongodb 本机驱动程序网站中,他们会在每次请求后关闭连接,但在高流量网站中似乎非常缓慢且存在问题。我只是想知道是否有必要这样做,或者我可以声明一个全局变量并将其引用到数据库,如下所示:
var mongodbClient = require('mongodb').MongoClient;
var db;
function connect() {
mongodbClient.connect('connection string', function (err, mdb) {
db = mdb;
});
}
connect();
function insert(query, collection, fn) {
db.collection(collection)
.insert(query, function (er, da) {
fn(er, da);
});
}
function find(query, collection, fn) {
db.collection(collection)
.find(query).toArray(function (er, da) {
fn(er, da);
});
}
我不想使用 mongoose,我更喜欢学习和理解引擎盖下发生的事情。
文档中提供的示例实际上并不适合现实生活中的用例。如果您使用的是服务器框架,您通常可以连接到 mongo 并在整个应用程序中共享对连接的引用。我使用 hapi 并通过插件连接到服务器,该插件允许我存储句柄以打开连接。这允许您在服务器关闭时进行清理。它们有许多用于管理 mongo 的模块,例如 mongoose、waterline 或我最近编写的 wadofgum-mongodb。