推荐答案
// www.javascriptcn.com code example
const { Neo4jGraphQL } = require("@neo4j/graphql");
const neo4j = require("neo4j-driver");
// 定义 GraphQL 类型
const typeDefs = `
type Movie {
title: String!
released: Int
actors: [Actor!]! @relationship(type: "ACTED_IN", direction: IN)
}
type Actor {
name: String!
movies: [Movie!]! @relationship(type: "ACTED_IN", direction: OUT)
}
`;
// 创建 Neo4j 驱动实例
const driver = neo4j.driver(
"bolt://localhost:7687",
neo4j.auth.basic("neo4j", "password")
);
// 创建 Neo4jGraphQL 实例
const neoSchema = new Neo4jGraphQL({ typeDefs, driver });
// 启动 Apollo Server
const { ApolloServer } = require("apollo-server");
const server = new ApolloServer({
schema: neoSchema.schema,
context: ({ req }) => ({ req, driver }),
});
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});本题详细解读
1. 安装依赖
首先,确保你已经安装了 @neo4j/graphql 和 neo4j-driver 这两个库。你可以通过以下命令安装它们:
npm install @neo4j/graphql neo4j-driver apollo-server
2. 定义 GraphQL 类型
在 typeDefs 中,我们定义了 Movie 和 Actor 两个类型。Movie 类型有一个 title 字段和一个 released 字段,以及一个与 Actor 类型的关系字段 actors。Actor 类型有一个 name 字段和一个与 Movie 类型的关系字段 movies。
3. 创建 Neo4j 驱动实例
使用 neo4j.driver 创建一个 Neo4j 驱动实例,连接到你的 Neo4j 数据库。你需要提供数据库的 URL 和认证信息。
4. 创建 Neo4jGraphQL 实例
通过 Neo4jGraphQL 类创建一个实例,传入 typeDefs 和 driver。这个实例会自动生成 GraphQL schema,并将其与 Neo4j 数据库连接。
5. 启动 Apollo Server
使用 ApolloServer 启动一个 GraphQL 服务器。将 neoSchema.schema 作为 schema 传入,并将 driver 作为上下文的一部分传入,以便在解析器中访问 Neo4j 驱动。
6. 运行服务器
最后,启动服务器并监听指定的端口。服务器启动后,你可以通过浏览器或 GraphQL 客户端访问 GraphQL API。