Я использую mongodb-native-driver в приложении express.js. У меня около 6 коллекций в базе данных, поэтому я создал 6 js файлов, каждый из которых имеет коллекцию как объект javascript (например, function collection(){}
) и функции прототипов, обрабатывающие все манипуляции с этими коллекциями. Я думал, что это будет хорошая архитектура.
Но проблема, с которой я столкнулась, - это как подключиться к базе данных? Должен ли я создать соединение в каждом из этих файлов и использовать их? Я думаю, что это было бы излишним, поскольку соединение в mongodb-native-driver создает пул соединений, и некоторые из них не будут оправданы.
Итак, как мне создать единственный пул подключений и использовать его во всех файлах collections.js? Я хочу, чтобы такое соединение было реализовано в mongoose. Дайте мне знать, если какой-либо из моих мыслительных процессов в архитектуре приложения ошибочен.
Использование Mongoose решит эти проблемы, но я прочитал в нескольких местах, что он медленнее, чем родной драйвер, а также я бы предпочел модели без схемы.
Изменить: Я создал модуль из моделей. Каждая коллекция находилась в файле, и в качестве аргумента использовалась база данных. Теперь в файле index.js я вызвал соединение с базой данных и сохранил переменную db после того, как я получил базу данных из соединения. (Я использовал функцию автоматического повторного подключения, чтобы убедиться, что соединение не было потеряно). В том же файле index.js я экспортировал каждую из таких коллекций, как этот
exports.model1 = require('./model1').(db)
exprorts.model2 = require('./model2').(db)
Это обеспечило, чтобы часть базы данных обрабатывалась только одним модулем, и приложение просто вызывало функцию, которую экспортировал каждый файл model.js, например save()
, fincdbyid()
и т.д. (whatever you do in the function is upto you to implement
).