Как получить доступ к подключению к БД во всем приложении в node.js ?

#javascript #node.js #mongodb #express #monk

#javascript #node.js #mongodb #выразить #монах

Вопрос:

Я подключаю mongodb с monk помощью app.js

 var express = require('express');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');

app.use(function(req,res,next){
  req.db = db;
  next();
});
 

Здесь все работает нормально. Но теперь я добавляю index.js в папке «Маршруты»

 var monk = require('monk');
var db = monk('localhost:27017/nodetest1');

exports.index = function(req, res){
  var collection = db.get('usercollection');
  collection.find({},{},function(e,docs){
  res.render('userlist', { "userlist" : docs});
});
res.render('index', { title: 'Express' })
};
 

Он также работает нормально. Но я подключаю БД как в app.js и index.js .
Что мне нужно сделать, чтобы определить это соединение в app.js доступен в index.js

Ответ №1:

Я знаю два решения:

Поместите соединение в другой файл, импортируйте этот файл.

db.js

 var monk = require('monk');
module.exports = monk('localhost:27017/nodetest1');
 

Другие файлы:

 var db = require('./db.js');
 

Или передавать одно и то же соединение по кругу:

app.js:

 var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
var module = require('./myModule.js')(db);
 

myModule.js:

 module.exports = (db) => {
    //...
};
 

Или:

app.js:

 var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
var module = require('./myModule.js');
module.init(db);
 

myModule.js:

 var db;

exports.init = (masterDb) => {
    db = masterDb;
};
 

И db перед его использованием устанавливается проверка.

Ответ №2:

создайте отдельный файл типа database.js и поместите в него код:

 module.exports = {
  url : 'mongodb://localhost/productecom'
};
 

и требуйте этот файл, где вам нужно подключение к базе данных:

как в index.js:

 var database = require('./database');
mongoose.connect(database.url);
 

в моем примере есть mongodb и другой URL, внесите изменения в соответствии с вашими потребностями, поскольку я не знаю, monk может быть, вам нужно экспортировать всю конфигурацию monk., это будет работать

Ответ №3:

Просто создайте простой db.js файл с подключением к базе данных и требовать вашего подключения всякий раз, когда вам нужно использовать его следующим образом:

db.js

 var monk = require('monk');
module.exports = monk('localhost:27017/nodetest1');
 

app.js

 ...
var db = require('./db.js');

app.use(function(req,res,next){
    req.db = db;
    next();
});
 

index.js

 var db = require('./../db.js');

exports.index = function(req, res){
    var collection = db.get('usercollection');
    collection.find({},{},function(e,docs){
        res.render('userlist', { "userlist" : docs});
    });
    res.render('index', { title: 'Express' })
};
 

Благодарности @DrakaSAN, которые разделяют ту же концепцию.