如何在 graphQL 瑜伽服务器中添加标量 JSON 类型?

How do I add a Scalar JSON type in graphQL yoga server?

我休息一下 API returns 一个包含 ID 列表的对象,每个 ID 都有计数。

{
    "orders": {
      "PMY5XbR7FZo5qEkEb": 0
    }
}

我提前不知道订单对象的键是什么,也不知道会有多少键。

建议使用 JSON 类型,虽然有风险但可行。

问题是这不适用于 graphQL 瑜伽服务器:

type Task {
  orders:  JSON
}

如何在瑜伽服务器中引用 JSON 类型?

您需要explicitly declare scalar types才能使用它们。要使此模式起作用,您需要添加一个额外的声明:

scalar JSON
type Task {
  orders:  JSON
}

GraphQL 对标量值的内容一无所知,这意味着这会将额外的处理工作推给客户端(以验证和反序列化 JSON),这并没有真正描述你的对象模型。

您可以考虑重新安排后端响应以获得结构化程度更高的对象模型。作为一个 API 的消费者,我会发现它更容易理解和使用

type Order {
  id: ID!
  count: Int!
}
type Task {
  orders: [Order!]!
}

但您不能直接将后端 REST API 结果传递给此表单而不重新排列它。