【问题标题】:How to create a loopback <model>.json file from unstructured data如何从非结构化数据创建环回 <model>.json 文件
【发布时间】:2018-03-31 09:55:01
【问题描述】:

我可以从一个示例 json 实例创建一个环回模型,如下所示https://docs.strongloop.com/display/public/LB/Creating+models+from+unstructured+data。但是从那里有一个 API 可以在 common/models 中创建 .json 文件?

【问题讨论】:

  • 你可以使用loopback命令行来创建模型的json。
  • 是的,但我想以编程方式进行。
  • 您可以查找命令行的代码,然后将其重新用于您的特定用途。
  • 很棒的细节@HarshilLodhi!嘿史蒂夫,是的,您可以使用该工具来完成任务。

标签: loopbackjs


【解决方案1】:

来自Looback Gitter 的@BoLaMN 说:

试试app.registry.modelBuilder.introspect(json);那应该给你一个属性对象。然后只需添加名称、基础和fs.writeSync JSON.stringify(obj)

我还没有尝试过,但它是有道理的。

【讨论】:

    【解决方案2】:

    我一直在用这个:

      var User = db.buildModelFromInstance('User', user, {idInjection: true});
    
      var UserModel = (loopback.getModel(User));
      var UserModelJSON = {}  
      UserModelJSON.name = 'User';
      UserModelJSON.base = 'PersistedModel';
      UserModelJSON.properties = UserModel.definition.rawProperties;
    
      console.log(JSON.stringify(UserModelJSON));
    
      fs.writeFile('User.json', 'UserModelJSON', function(err) {
        if (err) throw err;
      });
    

    【讨论】:

      【解决方案3】:

      如果您像这样定义 datasources.json 文件,则在项目根目录下的环回 /server 目录中

      {
        "db": {
          ...
        },
        "restResourceName": {
          "name": "restResourceName",
          "baseURL": "http://restResourceUrl/",
          "crud": true,
          "connector": "rest"
        }
      }
      

      然后你定义一个启动脚本,像这样

      const fs = require('fs')
      const path = require('path')
      
      const writeInstance = (server, modelName, instance) => {
        let Model = server.dataSources.restResourceName.buildModelFromInstance(modelName, instance)
        let modelJson = Model.definition.toJSON()
        delete modelJson.settings.base
        fs.writeFile(path.join(__dirname, '..', 'models', modelName + '.json'),
          JSON.stringify(modelJson, null, 2), (/*...*/) => {
            /*...*/
          })
      }
      
      module.exports = function (server) {
        writeInstance(server, "Atom", {
          atomicWeight: 6
        })
      }
      

      您将生成一个模型文件Atom.json

      {
        "name": "Atom",
        "properties": {
          "atomicWeight": {
            "type": "Number"
          },
          "id": {
            "type": "Number",
            "id": 1,
            "generated": true,
            "updateOnly": true
          }
        },
        "settings": {
          "strict": false,
          "forceId": "auto",
          "replaceOnPUT": true
        }
      }
      

      如果你想在 loopback api explorer (swagger GUI) 中查看模型,你必须使用 public: true 属性将模型添加到 model-config.json

      {
        "_meta": {
          "sources": [
            ...
          ],
          "mixins": [
            ...
          ]
        },
        "Atom": {
          "public": true,
          "dataSource": "restResourceName"
        }
      }
      

      【讨论】:

      • 这在 Loopback 4 中是否仍然相关?
      • @TekiusFanatikus 我相信这是用 loopback 3 编写的
      猜你喜欢
      • 2022-11-24
      • 2019-08-15
      • 2019-12-01
      • 1970-01-01
      • 2019-08-22
      • 2021-10-13
      • 2021-06-19
      • 1970-01-01
      相关资源
      最近更新 更多