gpt4 book ai didi

graphql - 动态 GraphQL 架构?

转载 作者:行者123 更新时间:2023-12-03 21:23:00 24 4
gpt4 key购买 nike

我有一个要提交表单数据的突变,此数据可能因您填写的表单而异。

表单会很多,它们将共享相同的“步骤”(每个表单由 1 个或多个页面/步骤组成)。

所以,我们可能有这些可重用的步骤:

  • 最爱水果
  • 出生日期
  • 姓名

  • 而这两种形式:
  • 一般信息(genericInfo):姓名+出生日期
  • 你吃什么? ( whatYouEat ): 姓名+最爱水果

  • 我需要一种方法来进行单个突变,允许定义表单名称,并采用 data需要根据此类表单名称进行验证的对象。

    例如,如果我将此突变称为:
    submitForm(formName: $formName, formData: $formData) {
    resultMessage
    }

    formName设置为 genericInfoformData设置为 { nameAndSurname: 'Foo Bar', favFruit: 'apple' } ,它应该抛出一个错误,因为 genericInfo没想到 favFruit , 但是 dateOfBirth .

    这可以通过 GraphQL 实现吗?有没有更好的方法可以到达这里?

    最佳答案

    GraphQL 不直接允许这样做。输入对象类型具有固定的结构,并且没有条件验证(内置的;您的解析器函数可能会根据其自己的检查产生错误,这些检查比架构中的内容更丰富)。

    我见过的最常见的模式采用 Relay GraphQL mutation conventions (即使您不希望您的客户使用 Relay)。每个可能的操作都有一个突变(在您的情况下,每个提交的表单有一个突变)和每个突变的不同输入对象类型。

    另请注意,输入对象类型可以嵌套,因此在您的示例中,您可以编写

    input Name {
    givenName: String!
    surname: String!
    }

    input Fruit {
    name: String!
    }

    input WhatYouEatInput {
    name: Name!
    fruit: Fruit!
    }

    mutation {
    whatYouEat(input: WhatYouEatInput!): WhatYouEatPayload!
    }

    这将允许跨不同突变类型重用模式的公共(public)部分。

    关于graphql - 动态 GraphQL 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51251065/

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