使用接口构建 graphql 查询

Posted

技术标签:

【中文标题】使用接口构建 graphql 查询【英文标题】:Use interfaces to build graphql query 【发布时间】:2020-06-07 21:08:06 【问题描述】:

是否可以使用现有接口构建 graphql 查询? 或者我们应该写两次相同的代码)

例如in the doc we have

interface Post 
  id: string;
  title: string;
  ...

然后在查询中写入相同的字段

query allPosts 
      posts 
        id
        title
        ...

有没有办法写出类似的东西

query allPosts 
      posts: Post[]

【问题讨论】:

【参考方案1】:

不可能做这样的事情,因为 TypeScript 类型在运行时不存在。接口也不足以表示 GraphQL 字段,因为它们无法捕获参数值或指令用法等信息。

但是,您可以从现有查询中自动生成 TypeScript 类型,这是通常所做的。见GraphQL Code Generator。

【讨论】:

【参考方案2】:

NO ... types!=queries ... posts: Post[] 已在响应定义中使用

Query 定义了你需要从这个(和其他)类型(-s)中得到什么子集(字段),f.e.只有标题

您可能正在寻找Fragments

【讨论】:

为什么我不能从类型中进行查询?字段是相同的片段不是我要找的 在第二条评论中得到答案)

以上是关于使用接口构建 graphql 查询的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL介绍&使用nestjs构建GraphQL查询服务

如何使用 (where:) 构建 GraphQL 查询

动态构建中继查询

如何使用 GraphQL 构建经过身份验证的查询?

使用 MongoDB 时的 Graphql 接口

由于我的 GraphQL 查询中的错误,构建失败