即使数据源在环回3上不可用,如何保持api仍然有效?

时间:2019-02-05 19:57:10

标签: javascript rest loopbackjs

我对数据源有疑问: 上下文:当前,我正在一个项目中,我的API使用两个数据源: A B

有时数据源 B 遇到问题,无法使用,而 A 始终可用。 当 B 不可用时,整个Web服务将崩溃。

我的问题:有什么方法可以对api进行编程,以使其与无法访问数据源 B 的仅扩展数据源 A 的部分一起使用?< / p>

注意:我正在使用Loopback 3

1 个答案:

答案 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));
}