neo4j - Neo4j 数据库、NestJS 框架和 GraphQL 如何集成?

标签 neo4j cypher graphql nestjs resolver

我正在尝试将我的 REST API (NestJS) 与带有 GraphQL 查询的新 Neo4j 数据库集成。有人成功吗?提前致谢

编辑1:(我添加了我的代码)

import { Resolver } from "@nestjs/graphql";
import { Query, forwardRef, Inject, Logger } from "@nestjs/common";
import { Neo4jService } from "src/shared/neo4j/neoj4.service";
import { GraphModelService } from "./models/model.service";
import { Movie } from "src/graphql.schema";

@Resolver('Movie')
    export class GraphService {
    constructor(private readonly _neo4jService: Neo4jService) {}

    @Query()
    async getMovie() {
        console.log("hello");
        return neo4jgraphql(/*i don't know how get the query and params*/);
    }
}

最佳答案

我正在使用 NestInterceptor 来完成此操作:

@Injectable()
export class Neo4JGraphQLInterceptor implements NestInterceptor {
  intercept(
    context: ExecutionContext,
    next: CallHandler<any>,
  ): Observable<any> | Promise<Observable<any>> {
    const ctx = GqlExecutionContext.create(context);
    return neo4jgraphql(
      ctx.getRoot(),
      ctx.getArgs(),
      ctx.getContext(),
      ctx.getInfo(),
    );
  }
}

在你的 Resolver 中使用它:

@Resolver('Movie')
@UseInterceptors(Neo4JGraphQLInterceptor)
export class MovieResolver {}

我的 GraphQLModule 是这样配置的:

@Module({
  imports: [
    GraphQLModule.forRoot({
      typePaths: ['./**/*.gql'],
      transformSchema: augmentSchema,
      context: {
        driver: neo4j.driver(
          'bolt://neo:7687',
          neo4j.auth.basic('neo4j', 'password1234'),
        ),
      },
    }),
  ],
  controllers: [...],
  providers: [..., MovieResolver, Neo4JGraphQLInterceptor],
})

注意使用 transformSchema: augmentSchema 来启用自动生成的突变和查询 (GRANDStack: Schema Augmentation)

希望能有所帮助!

关于neo4j - Neo4j 数据库、NestJS 框架和 GraphQL 如何集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53544876/

相关文章:

c# - 批量插入节点和关系 neo4jclient

java neo4j 密码查询来匹配节点

javascript - 如何从字符串中获取qql表达式

javascript - 在 Neo4j 中使用 UNWIND 语句创建 Node 时如何指定使用哪条记录?

neo4j cypher - 如何找到与节点列表有关系的所有节点

Neo4j-admin 导入示例

Neo4j 图形设计 - 标题/类别节点?

java - Rest WS 中的动态请求参数

graphql - 如何在 GraphQL 解析器中获取请求的字段?

rust - Juniper 和 GraphQLEnum - Unresolved 导入 InputValue