Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sequelize:Korzystanie z wielu baz danych

Musisz utworzyć różne instancje sekwencjonowania dla każdego połączenia z bazą danych, które chcesz utworzyć:

const Sequelize = require('Sequelize');
const userDb = new Sequelize(/* ... */);
const contentDb = new Sequelize(/* ... */);

Każda instancja utworzona z sequelize ma swoje własne informacje o bazie danych (host bazy danych, adres URL, użytkownik, hasło itp.) , a te wartości nie mają być zmieniane, więc nie ma „poprawnego” sposobu tworzenia wielu połączeń z jednym wystąpieniem sequelize.

Z ich dokumentów :

Jedna instancja na bazę danych

„Powszechnym” podejściem do tego jest posiadanie baz danych w pliku config.json plik i zapętl go, aby dynamicznie tworzyć połączenia, może coś takiego:

config.json

{
    /*...*/
    databases: {
        user: {
            path: 'xxxxxxxx'
        },
        content: {
            path: 'xxxxxxxx'
        }
    }
}

Twoja aplikacja

const Sequelize = require('sequelize');
const config = require('./config.json');

// Loop through
const db = {};
const databases = Object.keys(config.databases);
for(let i = 0; i < databases.length; ++i) {
    let database = databases[i];
    let dbPath = config.databases[database];
    db[database] = new Sequelize( dbPath );
}

// Or a one liner
const db = Object.entries(config).reduce((r, db) => (r[db[0]] = db[1].path) && r, {});

// Sequelize instances:
// db.user
// db.content

Będziesz musiał zrobić trochę więcej kodowania, aby go uruchomić, ale jest to ogólny pomysł.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wstaw do procedury składowanej z parametrami MYSQL nie działa

  2. Funkcja rankingowa w MySQL

  3. MySQL Query wykonuje się, ale zgłasza wyjątek

  4. MySQL LIMIT na instrukcji DELETE

  5. Autoinkrementacja SQL według daty i godziny