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

Apollo GraphQL无法为嵌套字段调用解析器

孟栋
2023-03-14
type gn_Feature implements Some_Interface {
  s_description: String
  s_id: URL!
  some_parent: gn_Feature
}

正如您所看到的,每个gn_feate都有另一个链接的gn_feate对象(链接在其他地方处理,这并不重要)。根据我目前的理解,您只需要为返回类型定义解析器,因此解析器如下所示:

export const resolvers = Object.assign(
  {},
  {
    DateTime: DateTime,
    Date: DateTime,
    Time: RegularExpression("Time", /^\d{2}:\d{2}(:\d{2})?$/),
    URL,
    Query: {
       gn_Feature: gn_FeatureResolver
    },
    gn_Feature: gn_FeatureResolver
  }
);

但是,如果我没有显式定义嵌套字段的解析器,我的查询将失败,并出现以下错误,如下所示:

gn_feature:{some_parent:gn_FeatureResolver}

GraphQL查询示例

gn_Feature(some_field:"AD", last:2){
  s_description,
  s_id
  some_parent{
    s_description 
  }
}

共有1个答案

高正初
2023-03-14

执行查询时,只有任何特定字段的值最初是未知的,需要解析...其他的一切,如类型、选择集等都已经知道了。解析器是用来解析特定字段的函数。在graphql.js中,没有类型的解析器。

Apollo在这方面有点混淆了,因为为了方便起见,MakeExecuteTableSchema的API允许您通过将标量包含在解析器映射中来定义自定义标量。此外,即使接口和联合也没有解析器,但Apollo也允许您使用解析器映射为这些抽象类型指定__resolvetype函数。Apollo的文档实际上将解析器定义为“将模式字段和类型连接到各种后端的函数”。然而,在一般的GraphQL上下文中,您应该将解析器视为“解析字段值的函数”。

因此,给定一个名为gn_feature的类型和一个名为some_parent的字段,这是构造解析器的正确方法:

const resolvers = {
  gn_Feature: {
    some_parent: someResolverFunction
  }
}
 类似资料:
  • 问题内容: 我有一个下面的JSON,我需要从中制作一个。在下面的JSON中,我只有3个级别,但通常可以更高,有时也可以更低。 我图的关键是它的部分和值应是最后。 现在我可以嵌套在其中,因此在为此创建POJO时遇到问题。我可以有一个级别,也可以嵌套在每个级别中,而我总是需要获取最后一个的ID 。 因此,我通过转到jsonschema2pojo来为此创建一个POJO,并提供了JSON,它在其中生成了我

  • 下面是一些示例代码: On doing JSONObject innerObj = (JSONObject) obj.get(“root1”);- 它给出: 线程“main”中出现异常Java . lang . classcastexception:Java . lang . string不能转换为org.json.JSONObject 我尝试了Gson、JSONParser-但仍然无法做到...

  • 我有一个Employee类,它以PersonalDetails类对象作为成员 类如下所示

  • 有一个类内部有另一个静态类。Jackson在反序列化JSON时调用setter。但某些设置器不能按预期工作。 类定义: 输出: 设置名称caled,名称=黑暗之塔

  • 我正在编写一个接收SQS队列对象的Lambda函数。SQS将json对象作为字符串值发送给SQS。 当我在Lambda中接收到请求时,AWS已经将其包装成一个新的JSON,由于JSON是一个字符串值,因此它将成为无效的JSON。 现在body.message不是有效的JSON。我尝试将它解析为一个原始值,比如如何使用Jackson在对象中包含原始JSON?但它总是抱怨,它在期待逗号分隔对象的地方找

  • 问题内容: 我必须与API进行交互,并且响应格式(根据我的阅读)似乎结构不良。我发现一个Google 网上论坛在这里回答了一个类似的问题,但是我在实现Response类来处理Gson.fromJson时遇到了麻烦。有没有我想念的例子? 问题答案: JSON对象可以由或Javabean类表示。这是一个使用Javabean的示例。 如下使用它: