2015-04-30 7 views
7

Come spostare i modelli integrati come Utente, Ruoli, User-Role-Mapping ecc ... nel database che abbiamo creato al posto dell'origine dati predefinita: db? I modelli integrati non sono elencati in Arc.Migrazione dei modelli integrati ai database

Ho provato a creare un nuovo modello che eredita questo modello di base. Ma i dati non vengono salvati nel nuovo modello.

Si prega di consulenza ... Sono stato seduto su di esso per un paio di settimane. Grazie

risposta

9

L'origine dati "db" predefinita viene inserita nella memoria. Questo è il motivo per cui i tuoi dati non vengono mantenuti dopo il riavvio dell'applicazione. Devi installare il connettore del database appropriato e quindi devi aggiungere l'origine dati per il tuo database all'interno del server/datasources.js.

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

Se si è creato l'applicazione con il comando "slc loopback", allora la vostra origine dati contiene solo connettore di memoria. Controllare datasources.js di file e vedrete qualcosa di simile:

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

Se si vuole persistere i dati, ad esempio nel database PostgreSQL (processo è quasi uguale per qualsiasi connettore supportato), si deve espandere le vostre datasoruces. file json con le informazioni del database:

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

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

È anche possibile farlo utilizzando il comando "slc loopback: datasource". La procedura guidata ti aiuterà a definire la tua origine dati. Non dimenticare di installare il connettore db.

npm install loopback-connector-postgresql 

L'ultima cosa da fare è assegnare l'origine dati ai modelli desiderati. È possibile farlo utilizzando la procedura guidata (consultare il comando loopback slc: model), oppure è possibile modificare manualmente il file server/model-config.json.

{ 
    "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 
    } 
} 

AGGIORNAMENTO Si può provare questo frammento di codice per aggiornare le tabelle dai modelli. Inserire il suo codice in qualche parte del 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); 
    }); 
    } 
}); 

ti consiglierei di leggere sulla creazione/aggiornamento schema del database dai modelli a pagina strongloop. Prestare attenzione intestano differenza tra le funzioni di Aggiornamento automatico e AutoMigrate

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

+0

Grazie per la risposta. Ho già provato la stessa cosa. Unico problema: non riesco a migrare nel database. Ho provato ad usare Arc e cli command. –

+0

Puoi spiegare con maggiori dettagli cosa hai provato? –

+1

Ho aggiornato la risposta con un po 'di codice e link a documenti in cui è possibile leggere ulteriori informazioni sull'aggiornamento dello schema dai modelli. –