如何在Strongloop Loopback框架中为模型配置两个不同的数据源?

时间:2015-07-01 23:30:34

标签: loopbackjs strongloop

我们的MySQL数据库设置了Write集群和Read集群,有没有办法设置Strongloop Loopback模型(例如用户)写入MySQL主机A并从MySQL主机B读取?

3 个答案:

答案 0 :(得分:8)

如果要更改单个模型的数据源,请尝试使用attachTo()。例如

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

您必须在datasources.json文件中定义readDS和writeDS数据源:

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

或者您可以动态创建数据源。

答案 1 :(得分:2)

在loopback 2.0中,您可以尝试重写getDataSource方法,并根据上下文,可以返回不同的dataSource。但是在loopback 3.0中,上下文已被删除,并且选项未传递给getDataSource,因此实现完美将是一项挑战。

答案 2 :(得分:-1)

您可以根据需要定义尽可能多的数据源here

然后,您应该能够通过添加ACL来控制访问类型来设置控制数据的方式。在这种情况下,READ或WRITE。有关此问题的文档可以在here

找到