Как интегрировать базу данных Neo4j, фреймворк NestJS и GraphQL? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь интегрировать мой REST API (NestJS) с новой базой данных Neo4j с запросами GraphQL.У кого-нибудь получится?Заранее спасибо

РЕДАКТИРОВАТЬ 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*/);
    }
}

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Я использую 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: Увеличение схемы )

Надеюсь, что это немного поможет!

0 голосов
/ 01 декабря 2018

Я не работал над GraphQL, но я знаю, что существует пакет npm ( Neo4j-graphql-js ) для перевода запросов GraphQL в запросы Cypher.Это облегчает совместное использование GraphQL и Neo4j.

Также отметьте GRANDstack Это полная интеграция разработки для построения приложений на основе Graph.

Если вы спроситевопросы такого типа здесь вы будете только понизить, я предлагаю вам посетить Neo4j Community .

...