使用 GraphQL 查询为突变提供所需的输入值

问题描述 投票:0回答:1

我刚刚学习 GraphQL,但我想我在这里得到了这个想法。我一直在寻找和寻找这个。我尝试了关键字“nested”,但这似乎不是我所需要的。

问题:

我有一个突变,需要 ID 作为其输入的一部分。我获取此 ID 的唯一方法是运行返回它的查询。

以下是获取 ID 的查询:

query getClientList($input: ListInfoInput!) {
    getClientList(input: $input) {
        clients {
            accountId
        }
    }
}

这是示例输入:

{
"input": {
    "page": 1,
    "pageSize": 200,
    "condition": {
        "attribute": "name",
        "operator": "contains",
        "value": "ACME Inc"
    }
}

}

返回:

{
    "data": {
        "getClientList": {
            "clients": [
                {
                    "accountId": "123456"
                }
            ]
        }
    }
}

然后我需要在此突变中使用该 accountID:

mutation createTicket($input: CreateTicketInput!) {
    createTicket(input: $input) {
        ticketId
        subject
        ticketType
        source
        client
        }
}

在此输入中:

{
    "input": {
          "subject": "Test subject",
          "description": "This test description",
          "ticketType": "SERVICE_REQUEST",
          "source": "INTEGRATION",
          "client": {"accountId": "123456"}
          }
}

因此,我获得 123456 的唯一方法是发出像所见的查询,并且我需要在一次 API 调用中完成此操作。这是一个 https POST,并且只需是一个 POST,无需访问任何 JavaScript 或服务器端处理。

这似乎应该是可行的,但我一生都无法弄清楚语法,甚至它可能被称为什么?是“嵌套”吗?那些似乎是嵌套突变,但事实并非如此?

我尝试将查询放入突变输入中,但结果非常失败。它会以某种方式发生突变吗?我尝试了几个地方,得到了各种各样的错误,这些错误基本上都表明语法错误,但我不知道我是否走在正确的轨道上。

谢谢!

graphql
1个回答
0
投票

您无法创建一个请求,其中一个查询/变更取决于另一个查询/变更的结果。

你有两个选择:

  1. 先查询账户,然后执行变异
  2. 创建一个新的突变(在服务器上),接受帐户
    name
    而不是
    accountId
    ,然后直接执行

当然,按名称行事会产生一系列问题。

© www.soinside.com 2019 - 2024. All rights reserved.