【问题标题】:Auto-generate swagger docs if you only use auto-discovery to discover DB tables如果您只使用自动发现来发现数据库表,则自动生成 swagger 文档
【发布时间】:2017-02-13 04:58:18
【问题描述】:

我想知道如果我们只使用此处概述的自动发现功能,我们是否仍然可以为我们的 Loopback API 服务器自动生成 Swagger API 文档:

https://docs.strongloop.com/display/public/LB/Discovering+models+from+relational+databases

有人知道这是否可能吗?如果我们使用自动发现,我会怀疑我们模型的任何 .json 文件是否会写入我们的服务器项目,这将使生成文档变得困难。

【问题讨论】:

    标签: swagger strongloop loopback apiconnect


    【解决方案1】:

    事实证明是可以的,方法是用脚本为所有模型写出models-x.json文件,然后在脚本完成后启动服务器!

    https://docs.strongloop.com/display/public/LB/Database+discovery+API

    这是自动发现的标准做法,这是我的代码完成此操作:

    const loopback = require('loopback');
    const fs = require('fs');
    const path = require('path');
    const async = require('async');
    
    var ds = loopback.createDataSource('postgresql', {
      'host': 'localhost',
      'port': 5432,
      'database': 'foo',
      'username': 'bar',
      'password': 'baz'
    });
    
    
    ds.discoverModelDefinitions(function (err, models) {
    
      async.each(models, function (def, cb) {
    
        ds.discoverSchema(def.name, null, function (err, schema) {
          if (err) {
            console.error(err.stack || err);
            cb(err);
          }
          else {
            fs.writeFile(path.resolve(__dirname, 'server/models', def.name + '.json'),
              JSON.stringify(schema), {}, cb);
          }
        });
    
      }, function (err) {
        if (err) {
          console.log(err.stack || err);
          process.exit(1);
        }
        else {
          console.log(' => Successfully wrote model data.');
          process.exit(0);
        }
    
      });
    });
    

    【讨论】:

    • 确定,就是这样
    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2020-10-25
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多