2015-04-30 7 views
7

So verschieben Sie integrierte Modelle wie Benutzer, Rollen, Benutzer-Rollenzuordnung usw. in die von uns erstellte Datenbank anstelle der Standarddatenquelle: db? Die integrierten Modelle werden nicht in Arc aufgelistet.Voreingestellte Modelle in Datenbanken migrieren

Ich habe versucht, ein neues Modell zu erstellen, das dieses Basismodell erbt. Daten werden jedoch nicht im neuen Modell gespeichert.

Bitte um Rat ... Ich habe seit ein paar Wochen darauf gesessen. Danke

Antwort

9

Standard "db" Datenquelle wird im Speicher abgelegt. Aus diesem Grund werden Ihre Daten nach dem Neustart der Anwendung nicht beibehalten. Sie müssen den entsprechenden Datenbankkonnektor installieren und dann müssen Sie die Datenquelle für Ihre Datenbank in server/datasources.js hinzufügen.

http://docs.strongloop.com/display/public/LB/Connecting+models+to+data+sources

Wenn Sie Anwendung erstellt mit „slc Loopback“ -Befehl, dann Datenquelle enthält nur Speicherstecker. Überprüfen datasources.js Datei und Sie werden etwas sehen:

{ 
    "db": { 
    "name": "db", 
    "connector": "memory" 
    } 
} 

Wenn Sie Ihre Daten beispielsweise in postgresql Datenbank persistieren (Prozess ist fast für alle Dienste unterstützt Stecker), haben Sie Ihre datasoruces zu erweitern. jSON-Datei mit Ihren Datenbankinformationen:

{ 
    "db": { 
    "name": "db", 
    "connector": "memory" 
    }, 

    "mydata": { 
    "host": "db_host", 
    "database": "your_database_name", 
    "username": "your_db_username", 
    "password": "your_db_password", 
    "connector": "postgresql" 
    } 
} 

Sie können auch dieses mit "slc Loopback: Datenquelle" do-Befehl. Assistent hilft Ihnen, Ihre Datenquelle zu definieren. Vergessen Sie nicht, den DB-Connector zu installieren.

npm install loopback-connector-postgresql 

Zuletzt müssen Sie Ihre Datenquelle den gewünschten Modellen zuweisen. Sie können dies mithilfe des Assistenten tun (siehe Befehl slc loopback: model), oder Sie können die Datei server/model-config.json manuell bearbeiten.

{ 
    "User": { 
    "dataSource": "mydata", 
    "public": true 
    }, 
    "AccessToken": { 
    "dataSource": "mydata", 
    "public": false 
    }, 
    "ACL": { 
    "dataSource": "mydata", 
    "public": false 
    }, 
    "RoleMapping": { 
    "dataSource": "mydata", 
    "public": false 
    }, 
    "Role": { 
    "dataSource": "mydata", 
    "public": false 
    } 
} 

UPDATE Sie können diesen Code-Schnipsel versuchen, Ihre Tabellen von Modellen zu aktualisieren. Setzen Sie seinen Code irgendwo in Server/server.js

var appModels = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role']; 

var ds = app.dataSources.mydata; 
ds.isActual(appModels, function(err, actual) { 
    if (!actual) { 
    ds.autoupdate(appModels, function(err) { 
     if (err) throw (err); 
    }); 
    } 
}); 

Ich würde Sie empfehlen, über das Erstellen/Aktualisieren von Datenbankschema von Modellen auf strongloop Seite zu lesen. Achten Sie stoßen Unterschied zwischen der automatischen Aktualisierung und AutoMigrate Funktionen

http://docs.strongloop.com/display/public/LB/Creating+a+database+schema+from+models

+0

Dank für Ihre Antwort danken. Ich habe es schon gleich versucht. Nur ein Problem: Ich kann das nicht in die Datenbank migrieren. Ich habe versucht, mit Arc und CLI-Befehl. –

+0

Können Sie mit mehr Details erklären, was Sie versucht haben? –

+1

Ich habe die Antwort mit Code und Link zu den Dokumenten aktualisiert, wo Sie mehr über das Aktualisieren des Schemas von den Modellen lesen können. –

Verwandte Themen