Как создать динамическое соединение с базой данных с помощью NodeJS, Express и Sequelize?

#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.