Il nostro database MySQL è configurato con cluster di scrittura e cluster di lettura, c'è un modo per configurare Strongloop Loopback Model (ad esempio utente) per scrivere su MySQL Host A e leggere da MySQL Host B?Come configurare due origini dati diverse per un modello nel framework Strongloop Loopback?
risposta
Provare a utilizzare attachTo() se si desidera modificare l'origine dati per un singolo modello. Per esempio
app.models.YourModel.attachTo(app.dataSources.readDS);
readData();
...
app.models.YourModel.attachTo(app.dataSources.writeDS);
writeData();
Si dovrà definire readDS e writeDS origini dati nel file datasources.json:
{
"readDS": {
"host": "hostA",
"database": "dbOnHostA",
"username": "user",
"password": "password",
"name": "readDS",
"connector": "mysql"
},
"writeDS": {
"host": "hostB",
"database": "dbOnHostB",
"username": "user",
"password": "password",
"name": "writeDS",
"connector": "mysql"
}
}
Oppure è possibile creare le origini dati in modo dinamico.
È possibile definire tutte le origini dati come si desidera come documentato here
Si dovrebbe quindi essere in grado di impostare il modo di controllare i dati con l'aggiunta di un ACL per controllare il tipo di accesso. In questo caso, LEGGI o SCRIVI. È possibile trovare la documentazione al riguardo here
So che è possibile creare il maggior numero di origini dati in datasources.json ma posso solo collegare un'origine dati a un modello particolare in model-config.json. Ero interessato a capire come definire origini dati differenti per WRITE e READ per lo stesso modello. –
In loopback 2.0, è possibile provare a eseguire l'override del metodo getDataSource e, in base al contesto, è possibile restituire origini dati diverse. Tuttavia, in loopback 3.0, il contesto è stato rimosso e le opzioni non vengono passate a getDataSource, quindi sarà una sfida raggiungere la perfezione.
Grazie. Questo dovrebbe funzionare in quanto cambia l'origine dati del modello prima di salvare. L'unica parte di problemi è che devi sempre impostarlo prima di salvarlo o leggerlo solo per assicurarti di raggiungere il giusto datasource. In questo momento non esiste alcun modo per definire una sorgente di lettura/scrittura diversa in model-config.json. –
Non ho verificato questo scenario se una chiamata REST per Create e passata a WriteDB e una chiamata REST per READ entrano. Ciò causerebbe la lettura di REST alla lettura dal DB errato? –
http://stackoverflow.com/questions/5153492/models-of-concurrency-in-nodejs risponde alla mia domanda sopra. Quindi è sicuro cambiare l'allegato del database. –