gpt4 book ai didi

python - GraphQL - 'either/or' 用于多个必填输入字段

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:56 24 4
gpt4 key购买 nike

我正在开发一种兼容 Relay 的 GraphQL 模式,并且希望包含一个突变,该突变采用需要一个参数(记录的 ID)或两个其他参数(记录号和目录号)的输入对象作为记录)。我正在使用 Python 和 Graphene图书馆。以下是当前输入对象的片段,不允许使用 ID 来代替编号/目录:

class CreateRecord(relay.ClientIDMutation):
"The parameters of a newly created record."
# Relay-compliant mutations need to specify an input class.
class Input:
"The available inputs for the CreateRecord mutation."
part_id = graphene.Int(description='The ID of the record.')
part_number = graphene.String(description='The record number.',
required=True)
catalog = graphene.String(description='The catalog of the record.',
required=True)

为了实现这一点,我研究了接口(interface)和联合,但到目前为止还没有任何运气。如果没有更灵活的输入对象,我可能需要创建另一个突变(例如 CreateRecordUsingID)。有没有办法实现这一点,或者更普遍地在 GraphQL 模式中支持此功能?

最佳答案

没有办法在类型系统中表达条件非空。因此,您必须自己在解析逻辑中验证这一点。

但是,为什么不将其分成 2 个单独的显式操作呢?一种需要 ID,另一种需要记录号和目录号?是的,您必须以不同的方式命名它们,但明确性是一件好事,您将使用而不是反对类型系统。

有一个关于突变设计的好文章系列,以及 this entry特别是与您的情况相关。

关于python - GraphQL - 'either/or' 用于多个必填输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com