我对数据源有一个疑问:上下文:目前我正在开发一个项目,我的API使用两个数据源:A、和B。
有时数据源B有问题,不可用,而A总是可用的。当B不可用时,整个web服务就会崩溃。
我的问题是:当数据源B无法访问时,是否有任何方法来编写api以使其与只进化数据源A的部分一起工作?
注意:我正在使用Loopback 3
发布于 2019-02-06 16:43:58
lazyConnect:true将推迟连接,直到您查询附加到它的模型,如果连接失败,则向客户端发送一个错误,而不会使服务器崩溃。
"myDatasource": {
"name": "myDatasource",
"host": "ds.com",
"database": "db",
"username": "root",
"password": "",
"connector": "postgres",
"lazyConnect": true
},我的问题是:当数据源B无法访问时,是否有任何方法来编写api以使其与只进化数据源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));
}https://stackoverflow.com/questions/54542088
复制相似问题