Sequelize: L'Utilisation De Plusieurs Bases De Données
Dois-je créer plusieurs instances de Sequelize si je veux utiliser deux bases de données? C'est, deux bases de données sur la même machine.
Si non, quelle est la bonne façon de le faire? Il semble exagéré d'avoir à se connecter à deux reprises à l'utilisation de deux bases de données, à moi.
Ainsi, par exemple, j'ai des bases de données différentes pour différentes fonctions, par exemple, disons que j'ai les données des clients dans une base de données, de statistiques et de données dans un autre.
Donc dans MySQL:
MySQL [customers]> show databases;
+--------------------+
| Database |
+--------------------+
| customers |
| stats |
+--------------------+
Et j'ai ceci pour vous connecter avec sequelize
//Create a connection....
var Sequelize = require('sequelize');
var sequelize = new Sequelize('customers', 'my_user', 'some_password', {
host: 'localhost',
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
},
logging: function(output) {
if (opts.log_queries) {
log.it("sequelize_log",{log: output});
}
}
});
//Authenticate it.
sequelize.authenticate().nodeify(function(err) {
//Do stuff....
});
J'ai essayé de "truc" par une définition d'un modèle à l'aide de la notation point
var InterestingStatistics = sequelize.define('stats.interesting_statistics', { /* ... */ });
Mais qui crée la table customers.stats.interesting_statistics
. J'ai besoin d'utiliser une table existante dans les stats de base de données.
Quelle est la bonne façon d'atteindre cet objectif? Merci.
OriginalL'auteur dougBTV | 2016-05-06
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer différentes instances de sequelize pour chaque id de connexion que vous souhaitez créer:
Chaque instance créée à partir de sequelize a ses propres DB info (db hôte, url, user, pass, etc...), et ces valeurs ne sont pas destinés à être changé, donc il n'y a pas de "bonne" façon de créer des connexions multiples avec une seule instance de sequelize.
à Partir de leurs docs:
Une instance par la base de données
D'un "bien commun" de l'approche pour ce faire, c'est d'avoir de vos bases de données en un
config.json
fichier et boucle sur elle pour créer des connexions dinamically, quelque chose comme ceci peut-être:config.json
Votre application
Vous aurez besoin de faire un peu plus de codage pour l'obtenir vers le haut et en cours d'exécution, mais son une idée générale.
J'ai le même problème sur plusieurs bases de données d'accès. Dans mon application, il existe une unique connexion aux bases de la piscine, qui gère l'ensemble de la db connexions sur plusieurs bases de données avec le même schéma. Donc, je n'ai pas trouvé de solution.
Pouvez-vous partager extrait de représenter les relations entre eux?
Est-ce évolutive ? Cela pourrait causer un problème si j'ai plus de 100 de la base de données à gérer ? 1000 ? 10 000 ?
Eh bien, un tableau peut stocker jusqu'à 2^32 éléments, de sorte que nous pouvons asume vous n'aurez jamais de problèmes concernant l'évolutivité
OriginalL'auteur Aramil Rey
Pourquoi n'utilisez-vous pas cru requête? Avec cela, vous pouvez vous connecter à une base de données de requête et de l'autre.
Voir l'exemple de code ci-dessous.
L'OP a demandé à propos de l'interrogation des différentes DBs pas différentes tables!
cette réponse comprend dbs la syntaxe est DB.Table où DB est votre nom DB.
Il n'existe pas de syntaxe pour la db: c'est
schema.table
pasdb.table
!OriginalL'auteur Y Talansky
si vous essayez d'associer des objets dans la même RDS à travers de multiples bases de données, vous pouvez utiliser
schema
.http://docs.sequelizejs.com/class/lib/model.js~Modèle.html#static-méthode-schéma
cela permettra de faire précéder le nom db pour le nom de la table, afin, sans doute, vos requêtes comme:
SELECT A.ColA, B.ColB FROM SchemaA.ATable A INNER JOIN SchemaB.BTable B ON B.BId = A.BId
OriginalL'auteur john ellis