【发布时间】:2017-09-03 08:49:17
【问题描述】:
我正在使用Scaphold.io 构建我正在开发的一个小应用程序的后端,但在尝试更新单个突变请求中的多个项目时遇到了问题。
在 Scaphold 中,当您创建新类型时,会为常见操作创建突变:创建、更新和删除。
您无法为这些突变或它们的输入类型重新定义架构。在我正在使用的模型类型 (card) 中,我得到了开箱即用的这些突变:
createCard(input: CreateCardInput!): CreateCardPayload
updateCard(input: UpdateCardInput!): UpdateCardPayload
deleteCard(input: DeleteCardInput!): DeleteCardPayload
updateCardInput 类型定义了以下字段:
listId: ID
description: Text
name: String
order: Int
id: ID!
clientMutationId: String
我能做什么:更新一张卡片
有了这个,我知道如何定义一个更新 order 单个卡的突变:
mutation updateCardOrder($card: UpdateCardInput!) {
updateCard(input: $card) {
changedCard {
id
order
}
}
}
变量:
{
"card": {
"id": "Q2FyZDo4MzA=",
"order": "1"
}
}
我想做的事:在一个突变中更新多张卡片
我得到了一些使用卡片列表 ([card]) 作为输入的提示,但我不知道如何让它工作。
理想情况下,类似于:
mutation updateCardOrder($cards: UpdateCardInput!) {
updateCard(input: $card) {
changedCard {
id
order
}
}
}
并将多张卡片作为变量传入,例如:
{
"cards": [
{
"id": "Q2FyZDo4Mjk=",
"order": "1"
},
{
"id": "Q2FyZDo4MzA=",
"order": "2"
}
]
}
当我尝试这个时,我得到一个错误:
{
"errors": [
{
"message": "Variable \"$cards\" of type \"[UpdateCardInput!]\" used in position expecting type \"UpdateCardInput!\".",
"locations": [
{
"line": 1,
"column": 32
},
{
"line": 2,
"column": 27
}
],
"name": "GraphQLError"
}
]
}
那么……鉴于我无法在 Scaphold 中更改输入类型或突变模式,在 GraphQL 中考虑这样做的正确方法是什么?有没有可能?
【问题讨论】:
-
你找到答案了吗?