Как перенести переменную в route.index - PullRequest
1 голос
/ 05 января 2012

В файле app.js у меня есть:

  , mongoose = require('mongoose')
  , db = mongoose.connect('mongodb://localhost/expressdb');

  app.get('/', routes.index);

и у меня есть файл routes/index.js, если я хочу передать db переменную в routes.index Что мне делать?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Я настроил пример того, как вы можете достичь этого, передавая db в качестве параметра в модуль маршрута, и этот модуль возвращает функцию (в которой db видна):

routes.index

module.exports = function (db) {
  return function(req, res, next) {
    // you can access db here
  }
}

app.js

...
routes = {};
routes.index = require('./routes')(db);
...
1 голос
/ 05 января 2012

Я думаю, что это довольно стандартно в библиотеках, которые подключаются к базе данных для общего подключения, если вы пытаетесь создать другое подключение (то есть: интерфейс БД является одноэлементным).Вы можете попробовать просто вызвать

db = mongoose.connect('mongodb://localeyes/expressdb');

в вашем файле route / index.js, и он, вероятно, будет использовать то же соединение.Я бы порекомендовал прочитать код, чтобы увидеть, будет ли он использовать существующее соединение или он будет пытаться переподключаться каждый раз, когда вы его вызываете.сделайте его глобальным, например,

global.db = db;

, а затем в вашем маршруте / index.js

var db = global.db;

...