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

2024-03-23

我正在尝试将我的 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 {}

My 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:模式增强 https://grandstack.io/docs/neo4j-graphql-js.html#schema-augmentation)

希望有点帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何集成Neo4j数据库、NestJS框架和GraphQL? 的相关文章

  • Neo4j 客户端使用“DateTime?”展开

    我目前正在尝试展开具有 日期时间 的 TravelEdges 列表 但我不断收到以下错误 CypherTypeException 类型不匹配 需要一个地图 但是字符串 2018 05 21T08 38 00 我目前正在使用最新版本的 neo
  • 编写自定义 webpack 解析器

    我计划使用一组更复杂的约定来将资源导入到我的 webpack 项目中 所以我正在尝试编写一个插件 该插件应该重写请求的模块定位器的部分 然后将其传递给解析器瀑布 https webpack js org development how to
  • Apollo-client (react) - 创建突变更新 - “在对象 (ROOT_QUERY) 上找不到字段 Fund({})”

    使用 react apollo 1 4 3 在父组件中 我使用 GraphQL 查询父节点 Fund 和子节点 fundQuarterlyMetric 这将返回以下格式的数据 id name fundQuarterlyMetrics ord
  • GraphQL - 根据参数返回计算类型

    Overview 简化 在我的 NodeJS 服务器中 我实现了以下 GraphQL 架构 type Item name String value Float type Query items names String Item 然后 客户
  • 连接 Apollo 和 mongodb

    我想将我的 Apollo 服务器与我的 mongoDB 连接 我知道那里有很多例子 但我陷入了异步部分 没有找到解决方案或示例 这很奇怪 我完全错了吗 我从 next js 的示例开始https github com zeit next j
  • 将 mongodb 与 neo4j 集成,是否有任何 API 可以链接它们?

    我正在研究推荐引擎 用户数据被收集 他们的友谊 位置 喜欢 教育 并已存储在 mongodb 中 我需要向这些用户推荐相关产品 我计划使用 Neo4j 作为推荐引擎 原因很明显 易于节点之间的遍历 路径信息 问题是我必须首先将 mongod
  • 具有 Flux 模式的中继缓存?

    我真的很想将 Relay 缓存合并到我的 Flux 存储中 这样我就可以进行 时间旅行 并深入了解应用程序 看起来中继存储和操作都是不可序列化的类 这很糟糕 但看起来我应该能够将缓存与网络请求分开并将缓存保存在 Flux 存储中 这听起来有
  • Neo4j 的数据库级验证

    我使用 Neo4j 作为我的图形数据库 假设我想限制用户名字段的长度小于10 有没有办法在数据库级别施加这样的约束 现在 您必须在应用程序级别上执行此操作 或者通过注册一个事务提交挂钩来检查该属性字段是否符合特定标准 See http do
  • GraphQL 突变操作顺序

    我正在创建一个有效的突变 但我不确定它是否按照我认为的方式工作 不过我想知道执行顺序是什么 Async 从上到下同步 同步随机顺序 其他的东西 我想确保在执行插入 更新插入之前从表中删除某些项目 使用以下突变查询字符串 这是否总是会执行我想
  • Spring Neo4j:通过不同控制台执行时相同的密码查询花费不同的时间

    通过不同控制台执行相同的密码查询会花费不同的时间 通过执行spring data neo4j 花了 8 秒 Query MATCH user User uid 0 FRIEND friend User RETURN friend publi
  • 如何将配置从配置服务传递到 Nest.js 装饰器?

    我将 UseInterceptors 与 nestjs platform express 中的 FilesInterceptor 一起使用 FilesInterceptor 允许我传递一些配置 例如文件存储文件夹 我想传递不精确的值 例如
  • 在 Neo4j 中可视化连接的组件

    我可以使用下面的代码找到图中最密集连接的组件 CALL algo unionFind stream pnHours YIELD nodeId setId groupBy setId storing all node ids of the s
  • jax-rs ContextResolver 理解

    但我试图了解 jax rs 中 Provider 的用法 但无法理解如何使用 ContextResolver 有人可以用一些基本的例子来解释这一点吗 您将看到它在解析序列化上下文对象时被大量使用 例如一个ObjectMapper用于 JSO
  • 在巨大的数据集上创建独特的节点和关系 NEO4J

    我的问题与这个非常相似 如何通过neo4j中导入的csv文件创建独特的节点和关系 https stackoverflow com questions 25090255 how to create unique nodes and relat
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处
  • 使用 neo4j 建模有序树

    我刚刚开始使用 neo4j 并且了解图形和关系的原理 但是我在想要建模的某些结构方面遇到了一些麻烦 我想在编程语言项目中使用它 并存储已解析源文件的 AST 从那里 我计划向节点添加大量额外的数据和关系 以帮助分析和工具 但基本的 AST
  • 如何禁用 Spring Data Neo4j 的登录

    我从 spring neo4j 收到不需要的查询日志 如下所示 25 08 2018 23 47 07 597 restartedMain INFO o n o d bolt request BoltRequest executeReque
  • Graphql - 获取完整的子对象,如果不存在则返回 null

    我有一个 graphql 查询 它得到一个Meeting对象与Client object type Meeting address String client Client type Client displayName String Th
  • 如何在实例化应用程序之前在 main.ts 中获取 Nestjs configService 实例

    我的应用程序实例取决于配置 serviceName在这种情况下 const serviceName authentication service const servicePrefix api serviceName const swagg
  • 参数映射不能用于 MERGE 模式

    我收到错误参数映射不能在合并模式中使用 我如何解决此错误 我正在使用下面的代码 我非常感谢任何帮助 提前致谢 MERGE u Person names RETURN u and data2 names name Keanu Reeves1

随机推荐