我有以下架构:
enum PaymentTypeName {
PAYMENT_CARD
PAYMENT_CARD_TOKEN
}
interface Payment {
id: ID!
type: PaymentTypeName!
}
type PaymentCardPayment implements Payment {
id: ID!
type: PaymentTypeName!
card: PaymentCard!
}
type PaymentCardTokenPayment implements Payment {
id: ID!
type: PaymentTypeName!
card: PaymentCard!
}
当Payment
PaymentCardPayment
或PaymentCardTokenPayment
由类型值确定时,即PAYMENT_CARD
或PAYMENT_CARD_TOKEN
。
如何在界面中表示PaymentCardPayment
/ PaymentCardTokenPayment
是否继承了PaymentTypeName
的特定值?
我尝试了各种组合:
type PaymentCardPayment implements Payment {
id: ID!
type: PaymentTypeName.PAYMENT_CARD!
card: PaymentCard!
}
和
type PaymentCardPayment implements Payment {
id: ID!
type: PaymentTypeName[PAYMENT_CARD]!
card: PaymentCard!
}
但所有这些都提示语法错误,我无法找到相关文档。
答案 0 :(得分:1)
您正在尝试在类型架构中声明字段 value ,这不是架构的含义。您应该只在模式中声明字段类型,在这种情况下它只是type: PaymentTypeName
。你在第一个代码块中使用它是正确的。
您的PaymentCardPayment
type
解析程序函数应返回枚举值,在您的情况下为PAYMENT_CARD
。
您的PaymentCardTokenPayment
type
解析器功能应返回PAYMENT_CARD_TOKEN
的值。
答案 1 :(得分:1)
GraphQL不支持您要执行的操作。如果某个字段的类型声明为<button onclick="F1()">Hide Lw</button>
<button id="bL1"> Lw </button>
,并且PaymentTypeName
和PAYMENT_CARD
都是PAYMENT_CARD_TOKEN
的有效值,那么它们也必须是该字段的有效值。无法采用现有的type9(无论是枚举,标量还是对象类型),并从该类型已定义的可能值集中有条件地创建可能值的子集。
也就是说,如果PaymentTypeName
将始终解析为PaymentCardPayment.type
,而PAYMENT_CARD
将始终解析为PaymentCardTokenPayment.type
,则在此处使用枚举实际上没有任何意义。完全没有实际上,在这种特定情况下,我们可以完全省略PAYMENT_CARD_TOKEN
字段。毕竟,在这种情况下,该字段的唯一目的是允许客户端区分type
可能解析为的可能类型。但是,GraphQL已经为我们提供了一个__typename字段,它通过解析为已解析类型的名称来完成此操作。
因此,在此特定情况下,只需执行以下操作即可:
Payment
并像这样查询类型为interface Payment {
id: ID!
}
type PaymentCardPayment implements Payment {
id: ID!
card: PaymentCard!
}
type PaymentCardTokenPayment implements Payment {
id: ID!
card: PaymentCard!
}
的字段:
Payment
答案 2 :(得分:0)
使用默认值对您有用吗?
currentBuild.description = "description env var if required :${env.ver}"
它不会阻止您覆盖该值,但至少应正确设置它。