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

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

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

您可以根据文档定义任意数量的数据源 here

然后您应该能够通过添加 ACL 来控制访问类型来设置您控制数据的方式。在这种情况下读取或写入。可以找到关于此的文档 here

如果要更改单个模型的数据源,请尝试使用 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"
  }
}

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

在 loopback 2.0 中,您可以尝试覆盖 getDataSource 方法并根据上下文,您可以 return 不同的数据源。但是在loopback 3.0中,context被去掉了,options也没有传递给getDataSource,所以要做到完美是一个挑战。