【问题标题】:GraphQL modeling: Associative array with variable keysGraphQL 建模:具有可变键的关联数组
【发布时间】:2019-08-22 20:08:05
【问题描述】:

是否有一种实用的方法可以在 GraphQL 架构中对这种类型的 JSON 数据结构进行建模:

{
    "id": 123,
    "name": "My Parent Object",
    "childWidgets": {
        "456": {
            "id": 456,
            "name": "Child Widget 1"
        },
        "789": {
            "id": 789,
            "name": "Child Widget 2"
        }
    }
}

具体来说,我希望 childWidgets 成为一个关联的对象数组,由它们的 id 值作为键。我知道 GraphQL 中的字段名称不能以数字开头,但是在这种情况下我没有将 id 值编码到架构中 - 这些自然不是固定值。 (在某些情况下,所讨论的数组键不是数字的,但由于它们的可变/短暂性质,同样不能编码到架构中。)

我希望这是一个常见问题,但到目前为止我只找到了one related question 关于这个主题。但是,这似乎是关于将一​​组定义明确的数字代码编码到架构中,因此并不完全相同。

【问题讨论】:

    标签: graphql


    【解决方案1】:

    GraphQL 要求将所有字段名称指定为模式的一部分,因此它不支持仅在运行时才知道键的类似地图的结构。您可以:

    • 将数据作为列表返回,然后在客户端对其进行转换。这将更多的工作交给客户端,但也确保您的响应仍然可以被 Apollo 等客户端正确规范化。

    • 返回custom scalar。这使您可以返回任何有效的 JSON 值,但代价是缺少验证和文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2018-01-12
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      相关资源
      最近更新 更多