我对数据源有疑问: 上下文:当前,我正在一个项目中,我的API使用两个数据源: A 和 B 。
有时数据源 B 遇到问题,无法使用,而 A 始终可用。 当 B 不可用时,整个Web服务将崩溃。
我的问题:有什么方法可以对api进行编程,以使其与无法访问数据源 B 的仅扩展数据源 A 的部分一起使用?< / p>
注意:我正在使用Loopback 3
答案 0 :(得分:2)
lazyConnect:true
将延迟连接,直到您查询附加的模型为止,如果连接失败,将向客户端发送错误而不会使服务器崩溃。
"myDatasource": {
"name": "myDatasource",
"host": "ds.com",
"database": "db",
"username": "root",
"password": "",
"connector": "postgres",
"lazyConnect": true
},
我的问题:有什么方法可以对api进行编程,以使其与仅在无法访问数据源B时才演化数据源A的部分一起工作?
您可以使用数据源的事件来知道何时交换模型。这是我简短测试过的内容。
server/boot/swap.js
function swapModelDatasource(app, model, ds) {
const name = model.name;
app.deleteModelByName(name);
const m = app.model(ds.createModel(name, model.definition.properties, {
settings: model.settings,
relations: model.settings.relations,
acls: model.settings.acls
}));
}
module.exports = app => {
const ds1 = app.datasources.aws;
const m = app.models.Node;
ds1.on('connected', () => swapModelDatasource(app, m, ds1));
}