如何在 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,所以要做到完美是一个挑战。
我们的 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,所以要做到完美是一个挑战。