简介
|
这是 GraphQL Library 7 版本的文档。对于长期支持 (LTS) 版本 5,请参考 GraphQL Library 5 LTS 版本。 |
Neo4j GraphQL 库是一个高度灵活、低代码的开源 JavaScript 库,通过挖掘关联数据的能力,能够为跨平台和移动应用实现快速的 API 开发。
工作原理
Neo4j GraphQL 库需要一组类型定义,用于描述图数据的结构,并创建一个 API 层以与数据进行通信。
它会生成完整的可执行模式,其中包含执行查询和变更所需的所有额外类型,以便与 Neo4j 数据库交互。
例如,考虑以下类型定义
type Product @node {
productName: String
category: [Category!]! @relationship(type: "PART_OF", direction: OUT)
}
type Category @node {
categoryName: String
products: [Product!]! @relationship(type: "PART_OF", direction: IN)
}
基于这些类型定义,库会生成查询和变更模板,用于创建新实例以及查询已有实例。
以下变更会创建一个新产品以及一个新类别
mutation {
createProducts(
input: [
{
productName: "New Product"
category: { create: [{ node: { categoryName: "New Category" } }] }
}
]
) {
products {
productName
category {
categoryName
}
}
}
}
以下是查询现有数据的示例
query {
products {
productName
category {
categoryName
}
}
}
响应如下所示
{
"data": {
"products": [
{
"productName": "New Product",
"category": [
{
"categoryName": "New Category"
}
]
}
]
}
}
针对该生成模式执行的每个查询和变更,Neo4j GraphQL 库都会生成一条在数据库上执行的 Cypher 查询。这消除了 N+1 问题,该问题会导致 GraphQL 实现变慢且低效。