【发布时间】:2020-11-05 02:00:18
【问题描述】:
GraphQL 和 Relay 规范要求具有 node(id: ID!) 字段的 Query 类型描述和实现如下:
type Query {
node(id: ID!): Node
}
Relay 想要通过 id 重新获取任何对象。这意味着服务器应该以某种方式了解它应该寻找哪种类型的对象。要扫描 db 中的哪个表。 很明显,id 不能只是序列号或 uuid,因为在这种情况下它必须扫描所有表。这是不好的方法。
我找到了对对象 ID 及其类型进行编码的解决方案,以便能够了解要查询的表。以 base64 编码的“24|User”之类的东西将给出唯一标识符“MjR8VXNlcg==”。我很确定这种方法会奏效,但我想知道有没有更好的方法来处理这种情况?有哪些替代方案?
【问题讨论】:
-
"24|User" 与 "MjR8VXNlcg==" 一样独特,我认为进行 Base64 编码没有意义,Base64 用于将二进制数据编码为 ASCII 字符集几乎所有系统都知道,这里是read this。您使用的不是二进制数据,因此这一步完全没有必要。
-
是的,你是对的。也可以这样实现
标签: graphql relay graphql-java