Relay 兼容性

这是 GraphQL 库版本 7 的文档。对于长期支持 (LTS) 版本 5,请参考GraphQL 库版本 5 LTS

根据 Relay GraphQL 服务器规范规定,为了使服务器与 Relay 兼容,它必须提供

  1. 一种重新获取对象的机制。

  2. 关于如何通过连接进行分页的描述。

Neo4j GraphQL 库开箱即用地提供了关于如何通过连接进行分页的描述。然而,要使其提供重新获取对象的机制,则需要进行配置,本页将详细介绍这一点。

对象标识

为了使 Relay 客户端能够重新获取对象,每个类型都必须有一个可用于此目的的唯一对象标识符。然后,服务器通过使实现 Node 指令的类型来告知 Relay 客户端已满足此要求,该指令具有以下定义

interface Node {
  id: ID!
}

例如,类型 Book 可能具有以下定义

type Book implements Node @node {
  id: ID!
  isbn: String!
}

有了它,Relay 客户端就能使用 node 查询字段重新获取 Book 对象。以下部分将深入探讨如何使用 Neo4j GraphQL 库来实现这一点。

@relayId

Neo4j GraphQL 库在必需的 id 字段之上提供了一个抽象,允许将数据库中任何唯一属性的值用作对象标识符。这是由 @relayId 指令提供的

定义

@relayId 指令具有以下定义

directive @relayId on FIELD_DEFINITION

用法

对于图书,ISBN 通常是一个唯一标识符

type Book @node {
  isbn: String! @relayId
}

当模式被增强时,此类型的输出如下

type Book implements Node @node {
  id: ID!
  isbn: String!
}

当使用 id 字段时,isbn 是数据库中使用的底层属性。此外,Book 类型现在可以通过 node 查询字段重新获取,并已准备好与 Relay 客户端一起使用。

@relayId 指令不保证唯一性。

© . All rights reserved.