【问题标题】:Do all nodes in a relay-compliant GraphQL server need to have an id?中继兼容的 GraphQL 服务器中的所有节点都需要一个 id 吗?
【发布时间】:2016-05-19 05:37:48
【问题描述】:

我正在构建一个符合中继的 GraphQL 服务器,其中某些类型将只存在一种。

几个例子:

获取应用的版本号:

query version {
  version {
     version,
     buildDate,
     builtBy
  }  
}

获取当前资源使用情况(为简单起见,服务器仅发送请求时测量的读数):

query usage {
   resource {
      memory{
         total,
         used
      },

      cpu{
         total,
         used
      }
   }
}

在上述所有示例中,versionresourcememorycpu 中只能存在 1 个。

relay object identification spec 表示所有对象都应该有一个标识。但是,在这种情况下,id 的存在似乎是多余的。

中继兼容的 GraphQL 服务器中的所有对象都绝对需要一个 id 吗?

【问题讨论】:

标签: relayjs graphql


【解决方案1】:

根据桑格利亚汽酒的经验,没有。但是,如果您对没有 ID 的对象执行突变,relay 将发出错误消息,因为它将无法查询仅对该单个对象的更改。

请注意,ID 是提供给客户端的不透明字符串。在您的情况下保持合规的最简单方法可能是仅对值的类型进行 base64 编码,例如id = base64_encode('version')

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多