当前位置: 首页 > 知识库问答 >
问题:

GraphQL:引用其他id

云弘壮
2023-03-14

我有一系列的桌子,比如:

Person:
person_id
first_name
last_name

CompanyPerson
person_id
company_id

Company
company_id
name

OfficePerson
office_id
person_id

Office
office_id
company_id
address_1
address_2
...

我如何向graphQL指出以下信息:firstName是“Joe”,公司名称,办公地址(仅Joe所属的办公地址)。

people(firstName: "joe") {
  company {
    name
    office {
      address_1
      address_2
    }
  }
}

如果这是一个单独的请求,我可以设置“上下文”来谈论“joe”

person(firstName: "joe") {
}

我可以使用graph ql查询模式来添加进一步的上下文限制(用户:“Joe”)

由于这是针对多人的,因此我看不出有一种方法可以根据前一个对象中提供的信息进一步细化查询。

使用:Ruby latest;graphql ruby最新版本;

非常感谢。

-丹尼尔

共有1个答案

程胤运
2023-03-14

解析器函数接收四个参数,其中一个是obj,即从上一个字段返回的对象。例如,分解器映射可以在相关部分显示为跟随者:

    // Root query/entry pt.
    Query: {
        async user(obj, input, context) {
          try 
            return user; // returns type User
          } catch (e) {
           console.log('err', e);
          }
        },

   ......
    // NOT a root query/entry pt.
    User: {
        async followers(obj, input, context) {
          try {
           const followers = await getFollowersByUserId(obj.id);
           return followers;
          } catch (e) {
            console.log('err', e);
          }
       },

如上所述,在用户的根查询返回后,graphql知道如何查找用户类型上的字段——在本例中,例如,followers。用户根查询返回的值可用作obj,可用于解析用户上的字段。无论查询是解析单个用户,还是解析类型为User的数组,这都应该成立。虽然上述内容在js中,但对于ruby来说应该是正确的,尽管您的模式可能需要修改。

 类似资料:
  • 我刚开始写CSV文件,有一个场景我找不到答案。我需要生成一个没有标题的CSV文件,其中数字值不带引号,字符串带引号。例如-71,72,“初始”,“2020-10-01”。 我使用的CSVWriter构造函数: 我试图用双引号填充字符串值,但这不起作用。 输出为: 我必须。toString ID,因为writeAll()和writeNext()函数似乎采用字符串数组,并且不接受任何类型的数组。 我想

  • 不单是结构能按引用传递,所有其他我们见过的类型同样可以。例如,我们可以这么写,来交换两个整数: void swap (int& x, int& y) { int temp = x; x = y; y = temp; } 用普通方式调用这个函数: int i = 7; int j = 9; swap (i, j); cout << i << j << endl; 程序输出97。

  • 问题内容: 在PostgreSQL中,我有一个数据库,我打算进行以下表声明: 一切正常,除了在创建最后一个表(更正)时出现以下错误: 错误:没有唯一的约束匹配给定键的引用表“提交” 我对更正表的打算是对每个提交都有唯一的更正,但是一个提交可以(也可以不)具有更正。 我该如何解决这个错误?是设计问题还是表声明错误? 问题答案: 外键约束不关心所引用的列是否在引用另一列本身。但是引用的列 必须 是唯一

  • 很多人都知道,mysql有索引这个概念,但是却很少去较真,如何利用索引去对数据降维,以提高查询速度。 举个常见的场景,那就是用户日志(订单),例如,在中国移动的通话记录系统中,需要记录 呼出手机号,被呼号码和呼出时间,而在该系统中,最常见或用的最多的需求,就是查询某个用户在某个时间段内的通话记录。我们做出以下数据特征模拟: 一个月内,有一万个账户,每天打出三万通话记录。 数据模拟生成代码: req

  • 问题内容: 我有Project1和Project2。Project1依赖于Project2。每次在Project2中进行一些代码更改时,我都感到厌倦,我必须导出Project2 JAR文件,并将其复制到Project1的lib文件夹中。 有没有一种方法可以自动实现呢? 或者,是否还有其他方法可以让Project1知道Project2进行了某些更改? 在项目的“构建路径”中,有一种方法可以指定对Wo

  • 本文向大家介绍vue组件如何被其他项目引用,包括了vue组件如何被其他项目引用的使用技巧和注意事项,需要的朋友参考一下 自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何让其他项目引用。本文就粗细的介绍下,如有疑问欢迎共同讨论。在这里你能了解下如下知识点: 1. 如何发布一个包到npmjs仓库上 2.如何引用一个npm包,尤其是本地引用 3.vue组件的两种引用方案 一、发布一个包到np