用RDBMS实现查询节点(id:ID!)的最佳方法是什么

时间:2020-07-15 14:21:20

标签: graphql relay graphql-java

GraphQL和Relay规范要求具有带有以下描述和实现的node(id:ID!)字段的查询类型:

type Query {
  node(id: ID!): Node
}

中继希望通过id重新获取任何对象。这意味着服务器应以某种方式了解应查找的对象类型。 db中要扫描的表。 很明显,ID不能只是序列ID或uuid,因为在这种情况下,它必须扫描所有表。那是不好的方法。

我来到解决方案中,对对象ID及其类型进行编码,以便能够了解要查询的表。以base64编码的“ 24 | User”之类的东西将赋予唯一标识符“ MjR8VXNlcg ==“。我很确定这种方法会奏效,但是我想知道有没有更好的方法来处理这种情况?有哪些替代方案?

1 个答案:

答案 0 :(得分:1)

https://relay.dev/docs/en/graphql-server-specification.html#object-identification给出了答案。

没有全局唯一ID的系统通常可以通过将类型与特定于类型的ID相结合来合成它们...

所以我在这个问题上做了什么。但是他们使用了另一种格式:“ TypeName:id”。