我正在将MongoDB添加到我的Express.js Node网络应用程序中。这是我到目前为止所得到的:
// in app.js
var mongodb = require('mongodb');
var mongourl = /* … */;
// These are just examples:
app.get('/write', function (req, res) {
mongodb.connect(mongourl, function (err, db) {
db.collection('Users', function (err, coll) {
coll.insert(/* stuff */, function (err) {
res.send(200, 'Done.');
});
});
});
});
app.get('/read', function (req, res) {
mongodb.connect(mongourl, function (err, db) {
db.collection('Users', function (err, coll) {
coll.find({}, function (err, cursor) {
cursor.toArray(function (err, items) {
res.send(200, items);
});
});
});
});
});
假设我想坚持使用默认mongodb driver(暂时):
这种模式对吗?我是否必须在执行数据库操作的每个不同路由中打开与数据库的新连接?
如果模式是正确的,那么我该如何处理这里明显的代码重复?显然,就目前而言,代码是不可接受的。
答案 0 :(得分:2)
使用新标准MongoClient。它为您管理池,默认为5。
//require as a module to be used anywhere.
module.exports = {}
var MongoClient = require('mongodb').MongoClient;
var mongoURI = /* … */;
MongoClient.connect(mongoURI, function(err, db) {
if(err) throw err;
module.exports.users = db.collection('users');
console.log('Connected to Mongo!')
})
然后
var db = require('./db.js')
//once connected
//db.users.find()... etc
退房: http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html
答案 1 :(得分:0)
不要关闭并重新打开连接,你只是在丢失资源:s