Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
423 views
in Technique[技术] by (71.8m points)

javascript - How to reuse mongodb connection through Promise

I want to reuse MongoDB connection. I 'am aware of How to reuse mongodb connection in node.js I want to acheive the same using Promises and Mongo driver v2

Currently I have to connect to db for every request which makes it slow. This is my code

"use strict"
var app = require('./utils/express')();
var mongodb = require('mongodb');

var MongoClient = mongodb.MongoClient;
//Actually I 'am connecting to MongoLab
var url = 'mongodb://localhost/my-mongo';

app.set('port', (process.env.PORT || 5000));

app.listen(app.get('port'), function () {
  console.log('ParkMe app is running on port', app.get('port'));
});


app.get('/location/create', function(req,res,next){
  MongoClient.connect(url).then(function(db) {
    return db.collection('parkme_parkingLots').find({}).toArray().then(function (docs) {
      return docs;
    });
  });
});

I want to do something like:

"use strict"
var app = require('./utils/express')();
var mongodb = require('mongodb');

var MongoClient = mongodb.MongoClient;
var url = 'mongodb://nidhind:1234@ds051635.mongolab.com:51635/my-mongo';
var db = MongoClient.connect(url).then(function(db) {
    return db;
});

app.set('port', (process.env.PORT || 5000));

app.listen(app.get('port'), function () {
  console.log('ParkMe app is running on port', app.get('port'));
});


app.get('/location/create', function(req,res,next){
  db.collection('parkme_parkingLots').find({}).toArray().then(function (docs) {
    return docs;
  });
});
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You're almost there, there are only a couple of changes in your code to be made:

"use strict"
var app = require('./utils/express')();
var mongodb = require('mongodb');

var MongoClient = mongodb.MongoClient;
var url = 'mongodb://nidhind:1234@ds051635.mongolab.com:51635/my-mongo';
// no need to call then() yet
var connection = MongoClient.connect(url);

app.set('port', (process.env.PORT || 5000));

app.listen(app.get('port'), function() {
  console.log('ParkMe app is running on port', app.get('port'));
});


app.get('/location/create', function(req, res, next) {
  // the connection is opened once, use it at will
  connection.then(function(db) {
    db.collection('parkme_parkingLots').find({}).toArray().then(function(docs) {
      return docs;
    });
  });
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...