graphql查询SQL父子关系

2023-12-24

我有一个 postgres 表,它表示具有父子表的层次结构:

表(类别):

id name parentId
1  CatA null
2  CatB null
3  CatC 1
4  CatD 1
5  CatE 3

期望的结果:

categories: 
[
   {
      name: "CatA",
      children: [
      {
         name: "CatC",
         children: [
         {
             name: "CatE",
             children: []
         }]
      },
      {
         name: "CatD",
         children: [] 
      } 
   ],

 },
 {
       name: "CatB",
       children: []
 }
]

问题是我不知道有多少级别,所以我无法查询如下内容:

category {
  name
  parent {
    name
    parent {
       name
       ...

实际上,您可以使用 GraphQL 实现潜在的无限递归。因此,如果您不知道您的模式有多深入,它并不介意。

我能够用这个模式重现您想要的结果。我希望它可以帮助你:

const categories = [
    {
        name: 'CatA',
        children: [
            {
                name: 'CatC',
                children: [
                    {
                        name: 'CatE',
                        children: []
                    }]
            },
            {
                name: 'CatD',
                children: []
            }
        ]
    },
    {
        name: 'CatB',
        children: []
    }
];

const categoryType = new GraphQLObjectType({
    name: 'CategoryType',
    fields: () => ({
        name: { type: GraphQLString },
        children: { type: new GraphQLList(categoryType) }
    })
});

const queryType = new GraphQLObjectType({
    name: 'RootQuery',
    fields: () => ({
        categories: {
            type: new GraphQLList(categoryType),
            resolve: () => categories
        }
    })
});

我得到了这个结果:


请注意我定义field财产作为function而不是一个普通的对象。这field定义为对象的属性将失败并且不允许您使用categoryType字段中的变量,因为在执行时它不存在。

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

graphql查询SQL父子关系 的相关文章

  • 如何扁平化查询结果?

    用一个例子让大家很容易理解 https developer github com v4 explorer https developer github com v4 explorer 查询观众信息 query viewer follower
  • Graphql 和往返。这只是ios应用程序的问题吗?

    我正在重新审视 graphql 我试图理解为什么节省往返对开发人员有好处 提出请求的费用这么贵吗 我有网络开发背景 让我们将标准 Rest api 与 graphql api 进行比较 我需要检索用户的个人信息及其朋友列表 传统的 Rest
  • Reactjs/Apollo/AppSync 突变触发两次

    我遇到了 React Apollo AppSync 的问题 突变触发了两次 或多次 我有一个 React 应用程序 它有一个由通常的 UI 按钮 onClick 触发的更新突变
  • GraphQL - 在查询多个突变期间如何检索先前突变的 id

    我想在同一个查询中运行多个突变 在下面的示例中 我创建了一个订单 并在创建了关于之前创建的产品记录之后 我一定有两个突变 首先 我插入订单 在输出中 我检索了 idorder 然后 我插入一个产品 这个产品 mutation createO
  • 如何将初始状态传递给减速器

    我目前使用一个减速器创建我的商店 该减速器已传递给它初始状态 import reducers from reducers const store createStore reducers initialState compose enhan
  • 自定义字段未保存

    我尝试使用 WPGraphQL 向用户添加自定义用户字段 因此我尝试重新创建官方 WPGraphQL 文档中的示例https docs wpgraphql com extending fields register fields to th
  • 如何将项目添加到列表中?

    我想添加一个字符串单词listOfVideosRated 列在我的用户表中 如果您可以发布您的架构 解析器映射模板 我可以提供更具体的建议 但我会尽力用您迄今为止发布的内容来回答这个问题 简单的方法 如果您已经拥有现有项目 则执行此操作的一
  • Nodemon 错误:“已达到文件观察器数量的系统限制”

    我在学GraphQL https en wikipedia org wiki GraphQL我正在使用prisma binding用于 GraphQL 操作 我正面临着这个nodemon当我启动 Node js 服务器时出现错误 它给了我由
  • GraphQL 如何执行 JOIN 请求而不是许多顺序请求?

    我有两种 GraphQL 类型 type Author id String name String type Book id String author Author name String 在我的数据库中 它是通过 books 表内的外键
  • Auth0 - Django 和石墨烯

    我目前正在使用 Graphql 和 Django Graphene JWT 我使用 django 作为后端 所有请求均通过如下所示的令牌进行身份验证 我有一个为 graphql 创建身份验证令牌的模式 目前如下所示 class Mutati
  • AWS AppSync 更新架构

    我正在使用 AWS AppSync Web 控制台 我从头开始创建了一个新的 API 我创建了一个像这样的新资源 type ToDo id ID title String AWS AppSync 创建 DynamoDB 表和架构后 如果我想
  • apollo graphql 架构 React-admin 初学者

    这些技术是全新的 到目前为止我所看到的让我非常兴奋 我很难找到我所坚持的东西的例子 React admin 的文档建议我的模式说 Posts 遵循 allPosts 和 allPostsMeta allPosts 部分工作没有问题 但自然
  • 中继:无法读取 null 的属性“fetchKey”

    我尝试使用新的中继挂钩 但收到此错误 import React Fragment Suspense useEffect from react import Banner from banner Banner react const grap
  • 连接中的不透明游标应该在不同的字段参数中保持稳定吗?

    The RANGE ADD突变需要一个edgeName以便它可以将新边插入到客户端连接中 作为其查询的一部分 它还包括cursor 问题是服务器无法知道客户端在生成边缘响应时可能将哪些参数应用于连接 这是否意味着cursor应该稳定 通常
  • Nestjs Apollo graphql上传标量

    我正在使用 Nestjs graphql 框架 我想使用 apollo 标量上传 我已经能够在另一个不包含 Nestjs 的项目中使用标量 schema graphql App module ts注册graphql GraphQLModul
  • 连接 Apollo 和 mongodb

    我想将我的 Apollo 服务器与我的 mongoDB 连接 我知道那里有很多例子 但我陷入了异步部分 没有找到解决方案或示例 这很奇怪 我完全错了吗 我从 next js 的示例开始https github com zeit next j
  • 即使目标对象存在,Apollo readQuery 也会失败?

    我正在调用 readQuery 我收到一条错误消息 modules js hash 2d0033b4773d9cb6f118946043f7a3d4385825fe 25847 Error Can t find field resoluti
  • 一对多关系未显示在对象放大架构定义中

    我刚开始将 amplify 与 GraphQL 结合使用 我正在设置数据库模式并在运行放大推送后自动生成函数 我想要实现但不知道如何实现的目标 我希望能够在 getUser 返回的对象中获取用户的所有连接信息 一对一和一对多关系 我希望仍然
  • Graphql - 获取完整的子对象,如果不存在则返回 null

    我有一个 graphql 查询 它得到一个Meeting对象与Client object type Meeting address String client Client type Client displayName String Th
  • 使用 buildSchema 时如何访问字段解析器内父解析器的值?

    当我们使用 graphqlHTTP 时 传递给解析方法的第一个参数实际上是客户端查询传递的参数 而不是 root 这对于查询解析器来说很好 但是对于字段解析器需要知道父级值的用例 如何实现这一点 type Person name Strin

随机推荐

  • mongoDB 更新与 arrayFilters 不起作用

    我在 mongo 中有以下文档结构 简化 id 5e30208675b5400cb0894c52 locations name Pleasure Gardens id 618 areas name Koi Pond area id 159
  • 如何在 C# 中防止/取消组合框的值更改?

    我在表单顶部有一个组合框 可将可编辑数据加载到下面的字段中 如果用户进行了更改但未保存 并尝试从组合框中选择不同的选项 我想警告他们并给他们一个取消或保存的机会 我需要一个带有可取消事件参数的 BeforeValueChange 事件 关于
  • 在 Python 中创建流类

    我有一个类需要一个包含 XML 文件的流 我不一定需要文件流 我可能想使用其他源 如数据库 套接字等 我需要从什么类继承IO模块 http docs python org library io html为了从其他来源提供流接口 安德烈给出的
  • 如何拍摄黑白视频

    我是 iPhone 应用程序开发新手 我开发了一款 iPhone 应用程序 在此应用程序中 我想开发使用 iPhone 相机录制黑白视频 请帮助我如何开发这个 然后还给出一些示例代码网址 提前致谢 您想要使用 kCVPixelFormatT
  • Python 分组依据

    假设我有一组数据对 其中index 0是值并且index 1是类型 input 11013331 KAT 9085267 NOT 5238761 ETH 5349618 ETH 11788544 NOT 962142 ETH 7795297
  • 如何在 Node.js 中检索客户端和服务器 IP 地址和端口号

    我尝试进行大量搜索以找到一种方法来了解客户端和服务器的 IP 地址和端口号 到目前为止我发现 客户端IP 可以知道req ip 客户端端口 我搜索了很多 但找不到任何方法来找到这个客户端临时端口 检查完后req and res对象 我发现有
  • 使用 joda 时间的两个日期之间的秒数差异?

    假设有两个日期 A 开始时间 和 B 结束时间 A 和 B 可以是同一天甚至不同天的时间 我的任务是在几秒钟内显示差异 我正在使用的日期格式是 Date Format yyyy MM dd T HH mm ss SSSZ 例如 start
  • 找不到System.Xaml?

    我有一个 VS2010 项目需要引用 System Xaml 我转到 添加引用 搜索 NET 引用 但它不在那里 我也仔细检查了 GAC 但没有这样的运气 我就是想不通为什么它不在机器上 该计算机安装了 NET 3 5 SP1 和 NET
  • UILabel 的字体在视图重新出现之前不会调整

    使用故事板 我创建了一个带有带有标签的单元格的表格视图 我希望能够轻松地将相同的字体分配给应用程序中的所有标签 因此我在辅助文件 smallFont mediumFont 和 largeFont 中创建了一些字体tableView tabl
  • 访问 ASP.NET 中没有值的查询字符串参数

    我正在尝试设置一个具有两种行为的页面 我通过 URL 将它们分开 一种行为通过 some controller some action 另一个是通过 some controller some action customize 不过 当我访问
  • 将派生类转换为基类

    我正在尝试刷新我的记忆 但无法通过 Google 找到答案 public class BaseClass public virtual void DoSomething Trace Write base class public class
  • Docker:连接期间出错

    每当我尝试使用 RSelenium 包时 我都会收到上述错误 shell docker run d p 4445 4444 selenium standalone chrome docker error during connect Pos
  • 将 DAO 注入构造函数是否被认为是不好的做法?如果是这样,为什么?

    我有一个 DAL 数据访问层 但这个问题也与 DAO 相关 它与 android 中的静态 Web 服务进行通信 除了我不想包含大量静态库之外 它的相关性较小 交互并不那么复杂 我有一个对象 它包装一个列表 该列表由来自该数据访问层的信息填
  • 为什么我不能通过 import scipy as sp 来使用 sp.signal? [复制]

    这个问题在这里已经有答案了 我想用scipy signal lti and scipy signal impulse函数来计算传递函数 我导入scipy模块按以下方式 import scipy as sp import numpy as n
  • 使用 pytest-asyncio 测试 FastAPI 路由时出现“RuntimeError:事件循环已关闭”

    我收到错误 运行时错误 事件循环已关闭 每次我尝试在测试中进行多个异步调用时 我已经尝试使用其他 Stack Overflow 帖子中的所有其他建议来重写event loop固定装置但没有任何作用 我想知道我错过了什么 运行测试命令 pyt
  • 在 odoo 10 中向状态栏添加颜色

    需要在odoo10中的状态栏添加颜色 哪些可用的openerp版本 例如
  • 一种数据结构,其中键为单词簇,值为单个单词或字符串

    我想创建一个能够将一组或一组单词映射到单个单词或字符串的数据结构 它可以被认为是 python 中字典的反向操作 您可以使用常规字典 targetword good wordmap best targetword positive targ
  • PHP MYSQL 博客存档菜单(按年和月)

    我正在寻找一种有效的方法将所有博客文章整理到以下格式的菜单中 2012 八月 6 九月 4 十月 2 Month 代表月份 显然 括号内的值代表该月的帖子数 单击后 将搜索该月 该年的所有帖子 我需要它是动态的 当该月创建帖子时自动选取 1
  • useSWR 不适用于异步获取器功能

    我正在使用 SWR 获取数据来填充表 我正在使用以下代码 const data items error useSWR fetchAllItems name fetchAllItems fetcher 函数看起来像这样 async funct
  • graphql查询SQL父子关系

    我有一个 postgres 表 它表示具有父子表的层次结构 表 类别 id name parentId 1 CatA null 2 CatB null 3 CatC 1 4 CatD 1 5 CatE 3 期望的结果 categories