Relay 兼容性
根据Relay GraphQL 服务器规范,为了使服务器与 Relay 兼容,它必须提供
-
一种重新获取对象的方法。
-
关于如何遍历连接的说明。
Neo4j GraphQL 库开箱即用地提供了关于如何遍历连接的说明。但是,需要配置才能提供重新获取对象的方法,本页面对此进行了详细说明。
对象标识
为了使 Relay 客户端能够重新获取对象,每个类型都必须具有唯一的对象标识符,可用于此目的。然后,服务器通过具有实现以下定义的 Node 指令的类型来告知 Relay 客户端此要求已满足
interface Node {
id: ID!
}
例如,类型 Book 可能具有以下定义
type Book implements Node {
id: ID!
isbn: String!
}
有了它,Relay 客户端能够使用 node 查询字段重新获取 Book 对象。下一节将深入探讨如何使用 Neo4j GraphQL 库执行此操作。
@relayId 指令
Neo4j GraphQL 库提供了对所需 id 字段的抽象,允许将数据库中任何唯一属性的值用作对象标识符。
这是由 @relayId 指令提供的,该指令具有以下定义
directive @relayId on FIELD_DEFINITION
考虑相同的 Book 示例,ISBN 通常是唯一的标识符。您可以这样配置它
type Book {
isbn: String! @relayId
}
当模式被增强时,此类型将输出为
type Book implements Node {
id: ID!
isbn: String!
}
当使用 id 字段时,isbn 是数据库中使用的底层属性。此外,Book 类型现在可以通过 node 查询字段重新获取,并已准备好与 Relay 客户端一起使用。
|
|