【问题标题】:How to Dynamically Create and Expose a New REST Endpoint In Code (on the fly) for a Custom Loopback Model如何在代码中(动态)为自定义环回模型动态创建和公开新的 REST 端点
【发布时间】:2016-01-30 02:26:56
【问题描述】:

我们正在开发一种 SaaS 会计产品,该产品使用 Loopback REST 框架并允许经过身份验证的最终用户在他们自己的数据库实例(MySQL 或 PostgreSQL)中创建新表。

问题:我们如何在代码中(动态)创建一个新的根级 Loopback REST 端点来访问新表?例如,如果用户添加了一个名为“cars”的新表,我们需要在名为 '/api/cars' 的代码中公开一个新的根级 REST 端点,该端点使用持久化模型来提供完整的 CRUD 功能,而无需重新启动 Node.js 实例并且不将 JSON 文件写入磁盘。

注意:这个问题类似于LoopBack: How to Dynamically Create Custom REST Endpoints In Code (On The Fly)。但是,该问题和答案仅涉及在代码中创建新模型,并未解决如何公开新的自定义根级 REST 端点以访问新模型。

我发现这个interesting post 似乎正朝着正确的方向前进,但我们不确定如何创建新的根 REST 端点,然后将其连接到动态生成的模型。另外,我们使用的是 Kendo 而不是 Angular:

angular.module('my-app-module')
  .config(function(LoopBackResourceProvider) {
    // Change the URL where to access the LoopBack REST API server
    LoopBackResourceProvider.setUrlBase('http://api.example.com/');
  });

【问题讨论】:

    标签: rest dynamic loopbackjs strongloop


    【解决方案1】:

    您只需将create a new model 即时附加到数据源。创建模型后,所有端点都可以访问它!

    var ds = app.datasources['my-data'];
    ds.createModel('Car', {
      model: String,
      make: String,
      year: number
    });
    

    【讨论】:

      【解决方案2】:

      这是我们最终得到的解决方案:

      // 服务器\boot.js

      var ds = app.datasources['mysql'];    
      ds.createModel('transactiontype', {
          rowid: {
              type: Number,
              id: true
          },
          transactiontypeid: String,
          description: String,
          active: Number
      });    
      let model = ds.getModel('transactiontype');    
      app.model(model, { public: true });
      

      【讨论】:

      • 嘿,我知道这已经有一段时间了,但这对我来说不再适用了...有什么变化是任何人都可能知道的吗?仍在使用 Loopback 2.x (:
      • 发生了什么?您遇到了什么错误?
      • 我实际上终于想通了.. 为了让它休息现在你需要用var MyModel = app.loopback.createModel('ModelName'); 创建它,你不能做 ds.createModel (你仍然需要 app.model 在结束,但如果您执行 ds.createModel,仅此一项不会暴露它)
      猜你喜欢
      • 2015-05-10
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2014-10-31
      • 2018-04-22
      • 2020-05-19
      相关资源
      最近更新 更多