问题标签 [graphql-codegen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
600 浏览

typescript - 如何一般输入 Apollo useQuery 钩子?

所以这是包装组件,我在其中传递了一个useOrganizationAutocompleteQuery由 graphql-codegen 生成的 useQuery 钩子。我希望能够传入任何类型的 useQuery 钩子。

我将如何输入queryHook道具以接受任何类型的阿波罗 useQuery 钩子?

这就是 Apollo 的 useQuery

0 投票
2 回答
320 浏览

typescript - GraphQL CodeGen - 使用单个请求执行任意次数的相同突变

我已经定义了一个突变,它允许用户复制他们的产品,一次一个产品:

现在我必须实现一个功能,它允许用户一次复制多个产品。

一种明显的解决方案是重新设计架构以接受多个产品 ID。如果可能的话,我想避免这项工作。

另一种选择是简单地连续多次发布相同的突变,但似乎使用 CodeGen 生成突变服务的方式,我必须发送多个单独的 HTTP 请求。

我的问题是:是否可以使用 CodeGen 生成的服务在单个请求中批量处理动态数量的突变?如果我不使用 CodeGen,批处理似乎会很容易,因为我可以动态地动态创建突变定义。然而,CodeGen 似乎强制执行相当静态的操作定义。

有没有一种很好的方法来实现我正在寻找的东西?我也可能会走错路,所以如果大多数graphql-y解决方案实际上需要重新设计架构,如果有人向我指出这一点,我会很高兴。类型

0 投票
0 回答
478 浏览

reactjs - Graphql突变抛出无效值错误

我正在尝试向我的 graphql api 发出突变请求,但我收到了无效值错误。我正在使用带有 typescript 的 graphql codegen 并在我的前端做出反应。我直接复制了我在 graphql 操场上创建的工作 graphql 突变。Codegen 生成时没有给出任何错误,typescript 没有给出任何错误,我已经检查了我的语法 10 次,但我终生无法弄清楚为什么会出错。

错误代码:GRAPHQL_VALIDATION_FAILED

错误消息:“参数“数据”的值无效 {email:$email,用户名:$username,密码:$password,confirmPassword:$confirmPassword}。

我的后端解析器看起来像这样

我的前端 graphql 突变看起来像这样

我的实现看起来像这样

0 投票
1 回答
2317 浏览

typescript - 如何从 GraphQL 模式生成 GraphQL 操作

我正在寻找一种在使用 GraphQL 时使开发人员工作流程更高效的方法。

目前,graphql-code-generator用于在前端从我的 GraphQL 服务器生成类型。

这很棒,但这只是生成类型。为了生成突变、查询和订阅的方法,我需要为我的前端项目中的每个操作创建一个 GraphQL 文档,例如:

我发现必须创建一个额外addPost.graphql的方法来生成该方法有点多余,因为它已经在我的 GraphQL 服务器上声明了。

是否有一个插件/配置可以生成这些方法,我可以在我的项目中使用而无需手动创建额外的 GraphQL 文档?

这是我的 GraphQL 生成器 yml 文件

0 投票
1 回答
869 浏览

javascript - 如何从生成的模式中获取简单的 graphql 变异查询?

我正在使用 graphql 代码生成器来获取我生成的文件:

在这个文件中我确实有

这给了我 gql 文档。

在我的测试中(使用supertest),我正在做:

我不想手动编写突变。我想使用我生成的模式文件。但不幸的是,定义了一个 gql,就像本文开头提到的那样。

是否可以生成要在我的 中使用的东西send()


代码生成.yml

0 投票
1 回答
559 浏览

graphql - 从 graphql-codegen 获取类似于 apollo codegen 生成的类型

我是阿波罗和graphql的新手。我尝试同时使用apollo- codegen和graphql-codegen,我希望在一个文件中生成所有类型,就像在 graphql-codegen 中一样,但是在 apollo 中它会创建多个文件。

我在使用 graphql-codegen 时遇到的问题是生成的类型不是我获取数据的格式。

在使用 apollo 客户端 useQuery 时,我从后端获得的数据格式为

所以 apollo -codegen 的示例查询的输出是: -

但是使用 graphql-codegent 我得到的输出是: -

是否有可能得到类似于 apollo codegen 的 graphql-codegen 输出,即格式为:-

以便在 useQuery 或 useMutation hook 中使用变得容易?通过使用 graphql-codegen

0 投票
1 回答
1929 浏览

graphql - AWS Amplify CLI 生成的 GraphQL 突变中的 $condition 输入参数是什么?

我从这个模型在 AWS AppSync(使用 CLI)上生成了一个简单的 GraphQL API:

这会生成一个 CreateWalletProperty、UpdateWalletProperty 和 DeleteWalletProperty 突变,都与此类似:

条件的架构是:

鉴于我总是必须提供强制性的 $input,$condition 参数的用途是什么?

0 投票
0 回答
307 浏览

typescript - Sequelize、Typescript 和 GraphQL:解析器第一个参数类型

我在使用 Sequelize 和 Typescript 开发我的 GraphQL Api 服务器时有点卡住了。我的问题与打字和概念问题有关。我已经根据数据库表及其关系定义了我的 Sequelize 模型。我在 GraphQL 解析器中使用这些模型,如下所示:

我的疑问与字段subparts解析器的第一个参数的类型有关。根据我通过graphQL代码生成器 parent生成的解析器类型应该具有我在架构中定义的相同类型,但这不是真的,它具有模型类型,因为模型实例是父解析器返回的。

更新:我在这里附上我的codegen.yml,遵循非常有价值的评论。我为该类型定义了一个映射器,Part这就是我应该是parent解析器参数的类型。

这是我用作Part映射器的类型:

我认为它应该是parentarg 的类型,但我使用的find是 Sequelize 在查询解析器中提供的方法,所以这可能parent也会影响类型。

我在理解什么和/或做错了什么?

非常感谢所有愿意花时间帮助我的人。

0 投票
1 回答
2822 浏览

typescript - 打字稿错误:“”仅指一种类型,但在此处用作命名空间

我经历了几个类似的问题,但无法解决这个问题。我一直在关注 2019 年的教程,但我无法找到在 2020 年做同样事情的正确方法。这是我遇到错误的行:

ERROR: 'HotelsQuery' only refers to a type, but is being used as a namespace here.ts(2702)

type IHotelsProps = HotelsQuery.Props<IHotelsBaseProps> & RouteComponentProps;

我从生成的模型文件中传递 HotelsQuery,定义为:

它被传递给的类:

0 投票
1 回答
1127 浏览

typescript - 从 .gql 文件中命名导出多个 graphql 操作

我在文件中定义了一些操作(查询/突变,有时在文件底部有一些片段).gql,有时在单个文件中定义了多个操作。

我想将这些导入到我的 JS/TS 文件中,可能还会为 TypeScript 生成相应的类型。

我在这里设置了一个 3 个文件的示例:

https://gist.github.com/balazsorban44/352d5295f604fb4274bfc934937737a1

queries.gql文件是源。它们应该在文件中生成相应的模块类型(请参阅参考资料generated-types.d.ts),因此我可以将它们导入到我的index.ts文件中,并使用它通过简单的fetch.

到目前为止,我尝试过的是这些工具/包:

据我所知,以上这些都不支持作为字符串导出的每个文件的多个操作,仅支持作为 DocumentNode 的多个操作,或者将整个文件作为字符串。

让我知道是否还有其他问题。