Примечание: прочитайте отредактированную часть этого сообщения перед ответом, это может сэкономить ваше время и ответить на один из моих вопросов.Как я могу структурировать мое экспресс-приложение, где мне нужно только открыть соединение mongodb?
Проблема, с которой я столкнулся, довольно проста, но я довольно новичок в этом отношении, и у меня возникают проблемы с выяснением того, как правильно использовать соединение с базой данных mongodb в приложении node/express.
Я использую экспресс 3.x, и я основывая свое приложение расположение вокруг этого проекта, предоставленного автором экспресса: https://github.com/visionmedia/express/tree/master/examples/blog
Я не заинтересован в том, блог, тем не менее, как приложение структурировано появится быть довольно приятным. Маршруты разделены, и все организовано красиво.
Моя проблема заключается в том, что у меня может быть 5-6 разных файлов js маршрута, и каждый файл js маршрута может иметь от 1 до 15 маршрутов; из этих маршрутов 1 или 15 может потребоваться доступ к db.
Итак, моя проблема - это действительно ужасная идея сделать db.open (...) каждый раз, когда я хочу запросить db. Я должен упомянуть, что на данный момент я использую собственный драйвер mongo-db (npm install mongodb).
Я также должен был бы включать в файл, как это: http://pastebin.com/VzFsPyax
... во всех этих файлов маршрутов и все мои файлы модели. Тогда я также имею дело с десятками на десятки открытых связей.
Есть ли способ структурировать мое приложение таким образом, что я делаю только одно соединение, и он остается открытым в течение всего сеанса (с новым, сделавшим каждый запрос тоже плохо)?
Если да, то как я могу это сделать? Если вы знаете ответ, отправьте образец кода, используя в качестве базового руководства приложение blog (приложение, связанное ранее в этой статье). В основном есть способ, которым маршруты и модели могут свободно использовать db, находясь в отдельных файлах, чем открытый код db.
Спасибо.
EDIT
Я сделал некоторый прогресс в решении одной из моих вопросов. Если посмотреть на пример блога Tj, он инициализирует свои маршруты в app.js так:
require('./routes/site')(app);
require('./routes/post')(app);
И в маршрутах подать JS он начинает так:
module.exports = function(app){
я наткнулся на проект ранее сегодня, когда я увидел, что кто-то передал 2 переменные в функции modules.exports call -> (app, db). Тогда, очевидно, ничего себе не может быть так просто, мне нужно просто настроить мои маршруты (приложение, db) тоже? Да, похоже.
Итак, теперь часть 1 проблемы решена. Мне не нужно требовать файл mongo.js с шаблоном подключения в каждом файле маршрута. В то же время он достаточно гибкий, и я могу решить выбрать, какие файлы маршрутов передают ссылку на db. Это стандарт и не имеет недостатка?
Часть 2 проблемы (важный, к сожалению) все еще существует.
Как я могу обойти необходимость делать db.open (...) вокруг каждого запроса, который я делаю, и в идеале делать соединение только один раз за сеанс?
https: // gist.github.com/1946211 – Raynos
Как это помогает моей ситуации, можете ли вы немного разобраться в том, что происходит с вашим код? – AntelopeSalad
Открывает одно соединение для каждой коллекции. – Raynos