我刚刚学习 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 或服务器端处理。
这似乎应该是可行的,但我一生都无法弄清楚语法,甚至它可能被称为什么?是“嵌套”吗?那些似乎是嵌套突变,但事实并非如此?
我尝试将查询放入突变输入中,但结果非常失败。它会以某种方式发生突变吗?我尝试了几个地方,得到了各种各样的错误,这些错误基本上都表明语法错误,但我不知道我是否走在正确的轨道上。
谢谢!
您无法创建一个请求,其中一个查询/变更取决于另一个查询/变更的结果。
你有两个选择:
name
而不是accountId
,然后直接执行当然,按名称行事会产生一系列问题。