我是node.js和mongo db中的新手,我在所有路线中都完成了这样的代码。
var express = require('express');
var router = express.Router();
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;
var ObjectID = mongo.ObjectID;
var collection;
//Connection to mongo db using mongo client
MongoClient.connect('mongodb://127.0.0.1:27017/mydb', function(err, db) {
//connection error or success message
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
throw err;
} else {
console.log("connected to the mongoDB");
}
//index
router.get('/', function(req, res) {
collection = db.collection('category');
collection.find({}).toArray(function(err, category) {
collection = db.collection('subcategory');
collection.find({}).toArray(function(err, subcategory) {
collection = db.collection('product');
collection.find({}).toArray(function(err, product) {
collection = db.collection('banner');
collection.find({status: 'A'}).toArray(function(err, banner) {
console.log(banner);
res.render('home',
{
title : 'Home',
categorys : category,
subcategorys : subcategory,
products : product,
banner : banner
}
);
});
});
});
});
});
});
module.exports = router;
请帮我建立一个共同的连接并从我的所有路由访问它,而不重复连接呼叫。提前谢谢
答案 0 :(得分:1)
以下是草案代码,用于保持每个请求之外的连接(即连接一次)并重用数据库/集合变量。
NodeJS Mongo驱动程序默认连接池大小为5。
重要提示:db和categoryCollection变量保留在每个请求之外。
var express = require('express');
var mongodb = require('mongodb');
var app = express();
var MONGODB_URI = 'mongodb://127.0.0.1:27017/mydb';
var db;
var categoryCollection;
// Initialize connection once
mongodb.MongoClient.connect(MONGODB_URI, function(err, database) {
if(err) throw err;
db = database;
categoryCollection = db.collection('category');
app.listen(3000);
console.log('Listening on port 3000');
});
app.get('/', function(req, res) {
categoryCollection.find({}).toArray(function(err, category) {
});
});
答案 1 :(得分:0)
您可以使用mongoose连接到您的mongo db。使用mongoose,您只需要连接到数据库一次,并且可以从所有路由访问。在你的app.js添加这些行
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test_db', function (err) {
if (err) throw err;
});
在您的路线中,您无需编写任何连接代码即可访问mongodb。