Ich evaluiere Loopback für eine neue Plattform, die unser Unternehmen baut. Ich habe ein Testprojekt eingerichtet und bin trotz der Lernkurve absolut begeistert vom Loopback-Framework. Ein Deal-Breaker, den ich nicht verstehen kann, ist, wie man sich auf Anfrage dynamisch mit einer Datenbank verbindet, basierend auf dem Benutzer und dem Kunden, der die Daten anfordert. Unser Altsystem hat eine Datenbank pro Kunde und pro Kundenstandort (ein Kunde mit 3 Standorten hätte insgesamt 4 Datenbanken) und es ist nicht geplant, die Datenstruktur in absehbarer Zeit zu migrieren. Das bedeutet, wenn eine Anfrage gestellt wird, müssen wir uns mit dieser Kundendatenbank verbinden, Daten abrufen und dann trennen.
Jeder Loopback Leute wissen, ob dies möglich ist?Dynamische Datenbankverbindungen basierend auf Benutzer in Loopback
1
A
Antwort
1
Betrachten Sie unten in datasources.json
"db1": {
"name": "db1",
"host": "localhost",
"database": "customers_one_db",
"password": "",
"user": "",
"connector": "mysql"
},
"db2": {
"name": "db2",
"host": "localhost",
"database": "customers_two_db",
"password": "",
"user": "",
"connector": "mysql"
}
eine Middleware wie folgt erstellen:
//middlewares.json
"inital:after": {
...
"./middlewares/dsChanger": {}
...
}
//middlewares/dsChanger.js
var app = require('../server');
module.exports = function(options) {
return function(req, res, next) {
if(req.headers.customerType === 'blah'){
app.models.Customer.attachTo(app.datasources.db2);
}else {
app.models.Customer.attachTo(app.datasources.db1);
}
next();
}
}
Haftungsausschluss: ich dies vor
UPDATE
nicht versuchtFür Datenquellen in Code erstellen, können Sie tun:
var DataSource = require('loopback-datasource-juggler').DataSource;
var mysqlConnector = require('loopback-connector-mysql');
var ds1 = new DataSource(mysqlConnector, {
host: 'localhost',
database: 'customers_one_db',
username: '',
password: ''
});
Und vergessen Sie nicht eine andere middlware zu erstellen und die letzte Phase Middleware setzen, um disconnect
die Datenquelle.
ds1.disconnect(function(err, result){});
Verwandte Themen
- 1. Loopback - Ergebnis der Benutzer auf Basis GET
- 2. Dynamische Objektzeichnung basierend auf Benutzer Klicken Sie auf
- 3. Loopback Passport-Benutzer ist null
- 4. Dynamische Legende basierend auf Daten
- 5. Dynamische Seitentitel basierend auf URL
- 6. Dynamische Navigation basierend auf Zeilen
- 7. Moodle: Dynamische Rollenzuweisung basierend auf Quiz-Ergebnis
- 8. Dynamische SQL basierend auf Werten in Tabelle
- 9. Dynamische PHP-Seiten basierend auf Benutzerrolle
- 10. Dynamische Bildausgabe basierend auf Benutzereingabe glänzend R
- 11. Dynamische Solr-Kernauswahl basierend auf Abfrageparameter
- 12. Shiny: Dynamische Subset-Daten basierend auf Benutzerspalteneingabe
- 13. Dynamische Auswahlboxen basierend auf der vorherigen Auswahl
- 14. css dynamische Klasse basierend auf Elternklasse
- 15. Loopback model.find basierend auf param aus verwandtem Modell
- 16. Warteschlangen Anfragen basierend auf Benutzer
- 17. Dynamische Anzahl von ImageViews basierend auf Benutzereingaben in XML
- 18. Loopback: Zugriffstoken auf Container erhalten, wenn Benutzer Datei hochladen
- 19. PHP Dynamische umfasst, basierend auf aktuellem Dateipfad
- 20. Rails dynamische Seite verschachtelt basierend auf ID
- 21. Mehrere Datenbankverbindungen in Rails
- 22. Dynamische Zählung basierend auf dem Wert
- 23. Matplotlib - Dynamische (Balken) Diagrammhöhe basierend auf Daten?
- 24. Run dynamische Klasse basierend auf Feld Wert
- 25. ansible dynamische Gruppe basierend auf IP-Bereich
- 26. for-Schleife basierend auf dynamische Liste Python
- 27. Highcharts Dynamische Spaltenfarbe basierend auf Datenvergleich
- 28. Django - Dynamische Formularfelder basierend auf Fremdschlüssel
- 29. Reagieren dynamische Routen basierend auf JSON-Daten
- 30. Eckige dynamische Validierung basierend auf anderen Daten
So ist die datasources.json ein Nicht-Starter, weil ich mit mehreren tausend Datenbanken zu tun habe. Es scheint jedoch, dass Ihre Lösung gut funktioniert, wenn ich eine neue Datenquelle inline erstellen kann (ohne die Datei datasources.json hinzuzufügen). Glaubst du, dass das funktionieren würde? – Zacho
@Zacho Ich aktualisierte meine Antwort –
Vielen Dank @Ebrahim! Ich werde das ausprobieren und die Antwort vollständig markieren, wenn sie es tut (ich bin mir sicher, dass es so sein wird). – Zacho