Search code examples
loopbackjsstrongloop

How to configure two different datasource for a model in Strongloop Loopback framework?


Our MySQL database are set up with Write clusters and Read clusters, is there a way to set up Strongloop Loopback Model (e.g. User) to Write to MySQL Host A and Read from MySQL Host B?


Solution

  • Try to use attachTo() if you want to change datasource for a single model. For example

    app.models.YourModel.attachTo(app.dataSources.readDS);
    readData();
    ...
    app.models.YourModel.attachTo(app.dataSources.writeDS);
    writeData();
    

    You will have to define readDS and writeDS datasources in your datasources.json file:

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

    Or you can create your datasources dynamically.