【问题标题】:Use same fields for type and input in GraphQL在 GraphQL 中对类型和输入使用相同的字段
【发布时间】:2018-06-26 22:50:47
【问题描述】:

在我的一个使用 GraphQL 的项目中,我定义了具有相同字段的 typeinput

例如

type SomeType {
    name: String
    id: String
}

input SomeInput {
    name: String
    id: String
}

这似乎是多余的,因为我必须两次定义相同的字段。是否可以定义一组字段,并让 SomeTypeSomeInput 包含这些字段?这将类似于面向对象编程中的继承,您将有一些基础,并且理想情况下,它们中的每一个都将从它继承。

例如,它可能看起来像:

SomeBase {
    name: String
    id: String
}

type SomeType extends SomeBase {}

input SomeInput extends SomeBase {}

这可能吗?如果是这样,您将如何实现?

提前致谢。

【问题讨论】:

    标签: graphql


    【解决方案1】:

    我不确定graphql是否支持继承,但是有接口。在您的示例中:

    interface IUser {
      name: String!
      id: String!
    } 
    
    type User implements IUser {
      name: String
      id: String
    }
    
    type UserInput implements IUser {
      name: String
      id: String
    }
    

    这当然不会减少样板,但至少可以确保您可以维护类型的通用合同。

    【讨论】:

    • 谢谢你的建议,但目标是减少样板。所以不幸的是,接口不是答案。
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2020-01-09
    • 2020-05-29
    • 2021-02-12
    • 2018-12-24
    • 2018-08-15
    • 2021-03-17
    • 2022-01-08
    相关资源
    最近更新 更多