我正在使用express框架,希望能够连接到mongodb,但不使用mongoose,而是使用原生的nodejs Mongodb驱动程序。如何在不每次创建新连接的情况下实现这一点?
目前,为了处理get或post请求,我每次都会打开一个新的数据库连接,并在请求完成后关闭它。是否有更好的方法?先谢谢了。
我正在使用express框架,希望能够连接到mongodb,但不使用mongoose,而是使用原生的nodejs Mongodb驱动程序。如何在不每次创建新连接的情况下实现这一点?
目前,为了处理get或post请求,我每次都会打开一个新的数据库连接,并在请求完成后关闭它。是否有更好的方法?先谢谢了。
根据我的评论示例,对其进行修改以便应用程序处理错误而不是无法启动服务器。
var express = require('express');
var mongodb = require('mongodb');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var dbURL = "mongodb://localhost:27017/integration_test";
var db;
// Initialize connection once
MongoClient.connect(dbURL, function(err, database) {
if(err) return console.error(err);
db = database;
// the Mongo driver recommends starting the server here
// because most apps *should* fail to start if they have no DB.
// If yours is the exception, move the server startup elsewhere.
});
// Reuse database object in request handlers
app.get("/", function(req, res, next) {
var collection = "replicaset_mongo_client_collection";
db.collection(collection).find({}, function(err, docs) {
if(err) return next(err);
docs.each(function(err, doc) {
if(doc) {
console.log(doc);
}
else {
res.end();
}
});
});
});
app.use(function(err, req, res){
// handle error here. For example, logging and
// returning a friendly error page
});
// Starting the app here will work, but some users
// will get errors if the db connection process is slow.
app.listen(3000);
console.log("Listening on port 3000");
var mongodb = require('mongodb');
var uri = 'mongodb://localhost:27017/dbname';
module.exports = function(callback) {
mongodb.MongoClient.connect(uri, callback);
};
将此片段添加到一个名为connect.js的文件中,然后在声明HTTP请求函数的文件中引用此文件(connect.js)。