创建具有复杂数据类型的 LoopBack 模型

Creating a LoopBack model with a complex data-type

我正在尝试在 LoopBack API 中创建模型,模型的 JSON widget.json 文件是:

    {
    "name": "widget",
    "plural": "widgets",
    "base": "PersistedModel",
    "idInjection": true,
    "options": {
      "validateUpsert": true
    },
    "properties": {
      "id": {
        "type": "string",
        "default": null
      },
      "projectId": {
        "type": "string",
        "default": null
      },  
      "clientId":{
        "type":"string",
        "required":false
      },
      "createdOn": {
        "type": "date",
        "defaultFn": "now"
      },
      "updatedOn": {
        "type": "date",
        "defaultFn": "now"
      },
      "deletedOn": {
        "type": "date",
        "default": null
      },
      "type":{
        "type": "string",
        "default": null
      },
      "version":{
        "type": "string",
        "default":null 
      },
      "dataSource":{
        "type": "dataSource"
      }
    },
    "validations": [],
    "acls": [],
    "methods": {},
    "mixins": {
      "Timestamps": true
    }
  }

问题是属性:

dataSource

是一个对象,我试图在widget.js文件中声明它:

'use strict';

const ModelBuilder = require('loopback-datasource-juggler').ModelBuilder;
const modelBuilder = new ModelBuilder();

const dataSource = modelBuilder.define('dataSource', {
  endpoint: String,
  params: [String],
  query: String,
});

当我 运行 代码时,出现此错误:

Swagger: skipping unknown type "dataSource".

我也试图找到一种方法将该类型声明为定义,就像我们在声明 swagger 文件时所做的一样,但我找不到!

有什么想法或建议吗?

我通过如下声明数据源解决了这个问题:

"dataSource":{
  "type": {
      "endpoint": "string",
      "params": ["string"],
      "query": "string"
  }
}