im использование expressJS и mongoDB, и я стараюсь, чтобы мое соединение mongodb было открыто в одном месте для всего приложения.Handle mongodb connection in expressJS
Как мне это сделать?
Я не хочу, чтобы открыть его каждый раз, когда в моем каждом маршруте/файл модели, который выглядит как:
moods.js (например, файл, у меня есть много из них, один для каждой коллекции)
exports.findAll = function(req, res) {
db.collection('moods', function(err, collection) {
collection.find().toArray(function(err, items) {
res.send(items);
});
});
};
.... some other methods
и главный app.js файл:
var express = require('express');
var routes = require('./routes');
var mood = require('./routes/moods');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'hjs');
app.use(express.favicon());
...
app.get('/moods', mood.findAll);
....
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
Теперь, когда я должен поставить этот кусок кода, чтобы существовать один раз и работать на каждом мои файлы сбор? Я хочу открыть одно соединение, но не открывать его каждый раз, когда я хочу запросить свою БД.
var mongodb = require('mongodb');
var db = new mongodb.Db('xxxx',
new mongodb.Server('xxxx', 10059, {})
);
db.open(function (err, db_p) {
if (err) { throw err; }
db.authenticate('xxxx', 'xxxx', function (err, replies) {
// You are now connected and authenticated.
});
});
те прохладное спасибо;) – maq
Это кажется гораздо проще (и лучше по этому вопросу) решения, чем принято –
@floatdrop - ты легенда, спасибо за указание на это, спасли меня так много времени :) – user992731