Подключение к пулу для нескольких баз данных Mysql в Node.js - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать мультитенантное приложение node.js (также с поддоменами), где каждый пользователь имеет свою собственную базу данных под одним хостом (скажем, экземпляр rds).

Так что это будетмне проще передать базу данных этому конкретному пользователю для доступа к этой конкретной базе данных.

Поэтому моя проблема здесь заключается в том, что когда пользователь запрашивает API, возможно ли динамическое изменение имени базы данных на основе запроса.

Одна вещь, которая возникла у меня в голове, - это создать соединение с пулом с учетными данными, которые имеют доступ ко всей базе данных, и добавить имя базы данных в запрос, таким образом, я могу достичь того, чего хочу, но только изЛюбопытно, что можно добавить имя базы данных после создания пула соединений, не добавляя его в запрос.

Мое решение:

select * from 'dbname'.users

Что я ищу:

const pool = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    // database: process.env.DB_NAME, leaving out since db name should be dynamic
    connectionLimit: 5,
    supportBigNumbers: true,
});

И в промежуточном программном обеспечении, когда мне нужен доступ к БД, я должен иметь возможность установить имя БД на основе запроса.

Причина этого в том, что я создал приложение и написал запросы без имени базы данных, теперь я должен добавить логику к каждому запросу в моем приложении.

1 Ответ

1 голос
/ 07 ноября 2019

Чтение официальных документов: https://github.com/mysqljs/mysql/blob/master/Readme.md#connection-options

Упоминается, что опция базы данных является необязательной. Вы можете отменить эту опцию при инициализации пула и указать правильную базу данных в своем запросе SQL. Вы не можете создать пул без конфигурации базы данных, а затем установить базу данных для подключения. Вы должны использовать запрос для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...