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

在express GraphQL中解析嵌套数据

商业
2023-03-14

数据布局如下所示:

type Ingredient {
  name: String!
  amount: Int!
  unit: Unit!
  recipe: Recipe
}

type Recipe {
  id: Int!
  name: String!
  ingredients: [Ingredient]!
  steps: [String]!
  pictureUrl: String!
}

根据我的理解,我的解析器应该是这样的:第一个解析食谱,第二个解析食谱中的成分字段。它可以(根据我的理解)使用食谱提供的论点。在我的recipe对象中,id(int)引用了成分,所以这应该是参数(至少我是这么认为的)。

var root = {
  recipe: (argument) => {
       return recipeList;
  },
  Recipe: {
    ingredients: (obj, args, context) => {
        //resolve ingredients
    }
  },

这些解析器像这样传递给应用程序

app.use('/graphql', graphqlHTTP({
  schema: schema,
  graphiql: true,
  rootValue: root,
}));

如何在Express-GraphQL中为嵌套类型编写分离解析器?

共有1个答案

卢出野
2023-03-14

只有查询和突变的解析器可以通过root定义,即使这样也是不好的做法。我猜您正在使用buildschema构建模式,这通常是个坏主意,因为生成的模式将只使用默认的解析器。

在使用普通graphql.js时,为像capitions这样的字段定义解析器的唯一方法是不使用buildschema。不是从字符串生成模式,而是通过编程方式定义它(即定义GraphQLSchema及其使用的所有类型)。

执行上述操作是一个巨大的痛苦,特别是如果您已经在字符串或文档中定义了您的模式。因此,另一种选择是使用GraphQL-Tools的makeExecutableSchema,它允许您像正在尝试的那样将这些解析器注入到类型定义中。MakeExecutableSchema返回一个GraphQLSchema对象,因此您可以将其与现有代码一起使用(如果您不想将中间件更改为apollo-server)。

 类似资料:
  • 问题内容: 此JSON输出来自MongoDB聚合查询。我本质上需要将嵌套数据JSON解析为以下’ 和值。 我尝试了5种不同的技术来从中获得所需的信息,但是使用和模块却遇到了问题。 理想情况下,输出将是这样的: 问题答案: 注意:来自MongoDB的JSON响应实际上无效。JSON需要双引号(),而不是单引号()。 我不确定为什么您的响应中有单引号而不是双引号,但是从其外观上,您可以替换它们,然后只

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

  • 问题内容: 我正在尝试解析这种结构:(它使我发疯,并且我尝试了我能想到的一切。但是我不是很有经验) “ topDrop”就像文件名吗?player是一个JSONArray,包含5个播放器JSONObject。但是在JSON术语中,最重要的是什么。我在JSON验证程序上签出有效的凭证,我需要这样的凭证: topDrop作为JSONObject Player,作为JSONArray,并循环遍历数组中的

  • 我已经编写了糟糕的代码来解析上面的json数组。下面是我使用的代码, 有谁能帮助我知道使用Jackson解析JSON吗?我们非常感谢你的帮助。

  • 问题内容: 我正在尝试解析JSON对象,其中的一部分看起来像这样: 等等.... 到目前为止,通过执行以下操作,我可以非常简单地解析: 但是,当我尝试将其用作“名称:”时,它将不起作用。 我试过了: 当我尝试这样做时,我得到“找不到JSONObject [业务]”。 当我尝试: 我得到了预期的“找不到JSONObject [名称]”。 我在这里做错了什么?我缺少一些基本的东西。 问题答案: 好吧,

  • 问题内容: 我必须将下面嵌套的Json数组的数据解析到我的应用程序中。我很困惑如何从中获取价值。 任何人都可以指导我如何从中获取内部价值。 我已经试过了 问题答案: 这是我认为您的JSON解析器应为的样子(可能存在一些拼写错误,我没有在编辑器上测试此代码:)):