#javascript #node.js #database #express #sequelize.js
#javascript #node.js #База данных #экспресс #sequelize.js
Вопрос:
как у вас дела? Кто-нибудь знает, как динамически создавать подключение к базе данных с помощью NodeJS, Express и Sequelize?
Моя команда разработчиков разрабатывает API для нашего мобильного приложения, и на странице входа у нас будет 3 поля:
- Корпоративный код
- Имя пользователя
- Пароль
Когда пользователь вводит «Корпоративный код», мне нужно перейти к моей базе данных по умолчанию, в которой хранятся все наши клиенты, и выполнить поиск данных клиента на основе того, что было введено в поле. Предположим, что корпоративный код равен 147, затем API переходит к таблице клиента в базе данных по умолчанию и выполняет поиск данных, где customer_id = 147. Это вернет данные клиента, которые также содержат имя его базы данных, например, 147_enterprismename, которая представляет собой базу данных с именем «147_enterprismename», относящуюся к этому клиенту.
Что мне нужно: Создайте соединение Sequelize, на основе которого был введен «Корпоративный код», вот так:
const Sequelize = require('sequelize')
const sequelize = new Sequelize(dynamic_database_name, 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000
}
})
Мне также нужно, чтобы API возвращал соединение со всеми маршрутами, где находятся функции, которые извлекают данные из базы данных и так далее.
Комментарии:
1. Вы могли бы написать служебную функцию, которая возвращает объект Sequelize connection. Для каждого пользовательского запроса вам нужно будет подключиться, обработать пользовательский запрос и затем отключиться. Это увеличивает нагрузку на ваше приложение, что может быть проблематичным. ИМХО, было бы лучше иметь единую базу данных с customer_id в качестве части первичного ключа для всех необходимых таблиц.
2. Спасибо за ваш ответ. К сожалению, база данных в настоящее время запущена на уже работающем программном обеспечении, поэтому мы создаем API для работающей системы, что означает, что у нас не может быть единой базы данных, у каждого клиента есть своя единственная база данных. Кстати, мы попробуем ваше решение, ty еще раз.
3. @VictorMathiusso Я столкнулся с той же проблемой, дайте мне знать, если вы нашли какие-либо решения conquer.