2016-04-07 6 views
0

Ich habe ein paar PHP-Skripte, die ich gerade nach Node.js migriere. Ich verwende Sails.js dafür und ich würde gerne wissen, wie ich Datenbanken für jede Anfrage basierend auf einem Anfrageparameter ändern kann.Kann ich Datenbanken bei jeder Anfrage ändern (Sails.js)

Derzeit habe ich 3-4 identische PostgreSQL-Datenbanken. Sagen wir einfach, dass jede Datenbank einem anderen Client entspricht.

Unten finden Sie ein Segment des aktuellen PHP-Skript, in dem die Datenbankverbindung hergestellt wird:

$database = $_GET['db']; 
$conn_details = "host=localhost port=5432 dbname=$database user=****** password=******"; 
$dbconn = pg_connect($conn_details); 

Hier können Sie den Namen der Datenbank aus dem Anfrageparameter „db“ kommt, dass.

Ich möchte eine ähnliche Funktionalität in meinem sails.js Controller haben. Ich weiß, dass ich mehrere Datenbanken in den connections.js deklarieren kann und dass ich Modelle haben kann, die verschiedene Datenbanken verwenden, aber was ich danach bin, ist, dass die Modelle gleich bleiben und nur die Datenbank, die auf jeder Anfrage geändert wird.

Ich habe 2 ähnliche Fragen gefunden, aber sie sind beide seit einiger Zeit unbeantwortet geblieben. (Here und here)

Schätzen Sie die Hilfe im Voraus.

Antwort

0

Ich glaube, Sie sind für so etwas wie sub apps

sails-hook-subapps

suchen, aber es ist experimentelles Modul. Daher würde ich nicht empfehlen, es in der Produktion zu verwenden. Andere Option auch nicht gut ist Ihre Modelle wie die Multiplikation:

  • Ein Hauptmodell mit allen Methoden, Attribute und „Stoff“
  • Viele Modelle mit Verbindungen Config

In ‚Eltern‘ Modell, das Sie wählt das Modell aus, an das die Sendeaktion gesendet werden soll. Zum Beispiel schreiben Sie Methode:

getModel: function(dbName){ 
    return models[dbName]; 
} 

in Modellen Objekt werden Sie alle Modelle mit verschiedenen Verbindungen speichern. Ich bin mir nicht sicher, wie Validatoren in diesem Szenario funktionieren. Sie müssen testen, ob es nicht erforderlich ist, tun Sie so etwas in Kind Modelle

attributes: parentModel.attributes 

Ich hoffe, es wird Ihnen helfen.

Verwandte Themen