【问题标题】:Define Custom Objects as input & output for Loopback Models将自定义对象定义为环回模型的输入和输出
【发布时间】:2018-07-01 02:24:08
【问题描述】:


我是 node.js 的新手,尝试使用环回框架创建一组 API。我的要求是接受 JSON 作为我的 API 的输入,并且我试图在模型 JSON 文件中定义相同的内容。根据官方文档,loopback 支持 object 类型作为参数类型,但我看不到在哪里可以定义 JSON 对象结构。有人可以让我知道如何做到这一点吗? 该模型的相关sn-p如下:

"retrieveProfile": {
        "description": "Returns back a particular entity's profile details",
        "isStatic": true,
        "accepts": [
            {
                "arg": "msg",
                "type": "string",
                "http": {
                    "source": "query"
                }
            }
        ],
        "returns": {
            "arg": "greeting",
            "type": "string"
        },
        "http": {
            "verb": "get"
        }
    }

【问题讨论】:

  • 你考虑过embedded model吗?这有点介于对象属性和常规相关模型之间。
  • 据我所知,嵌入式模型是properties 属性的一部分,而我正在尝试使用accepts 属性。您能否就这种情况下的最佳做法提出建议?
  • @Debojit 你有想过这个吗?
  • @Jonathan 很遗憾,没有。我不得不采取艰难的方式,比如接受 JSON 作为字符串,然后接受JSON.parse。工作,但不是一个好的实现,说得轻巧。
  • @Debojit 我想通了。我知道这对游戏来说已经晚了,但也许它可以帮助前进。

标签: node.js loopbackjs


【解决方案1】:

我想出了这个。您已将自定义对象定义为环回实例中的新模型。

假设您的环回实例中有以下两个模型(这是伪代码,尚未测试,但希望您能明白):

buildings.json

{
  "name": "Buildings",
  "properties": {
    "name": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "rent": {
      "type": "number"
    }
  }
}

tenants.json

{
  "name": "Tenants",
  "properties": {
    "name": {
      "type": "string"
    }
  }
}

确保在model-config.json 中声明它们。如果您将这些模型连接到数据源,这仍然可以工作,但它们不必连接到数据源即可使其工作。我在model-config.json 中声明了它们,然后将数据源设置为null

然后,当您创建远程方法时,您会这样做

buildings.json

{
  "name": "Buildings",
  ...
  "methods": {
    "chargeRent": {
      "accepts": [
        {
          "arg": "tenant",
          "type": "Tenants",
          "required": true
        }
      ],
      "returns": {
        "root": true,
        "type": "object"
      },
      "http": {
        "verb": "post"
      }
    }
  }
}

显然,您可以根据需要配置远程方法,但最重要的部分是您定义的 type 需要与模型名称匹配。

完成此操作后,如果您在 Loopback API 资源管理器中查看此方法,您应该会看到文档显示自定义对象作为此端点的参数。而且,根据您为自定义对象定义属性的方式(即必需与否),如果不包含这些属性,它将引发错误。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2014-04-15
    相关资源
    最近更新 更多