Apollo+角度突变不适用于变量



我在用变量创建突变时遇到了问题。我可以让它直接包含值,比如:

export const orderCancellation = gql`
mutation{
cancelOrder(input: {id: 2649,  cancellationReasonId: 1 } ) {
order{
id,
isCancelled
}
}
}`;

但当尝试使用变量时,什么都不起作用:

export const orderCancellation = gql`
mutation cancelOrder($id: ID!, $cancellationReasonId: ID!) {
cancelOrder(input: {id: $id,  cancellationReasonId: $cancellationReasonId }) {
order {
id,
isCancelled
}
}
}`;

来自我们服务器的自定义错误消息:

Didn't find any result for  'CancelOrderPayload' with the arguments '{:input=>#<#<Class:0x00005608dca67e90>:0x00005608e10cd790 @context=#<Query::Context ...>, @ruby_style_hash={:id=>nil, :cancellation_reason_id=>nil}, @arguments=#<GraphQL::Execution::Interpreter::Arguments @keyword_arguments={:id=>nil, :cancellation_reason_id=>nil}>, @maybe_lazies=[]>}.

这就是我所说的突变:

this.apollo.mutate({
mutation: orderCancellation,
variables: {id: orderId, cancellationReasonId: reasonId}
});

有人知道我做错了什么吗?也许是服务器端的问题?

编辑1:这是带有变量实现的请求负载(取自Chrome DevTools上的"网络"选项卡(:

operationName: "cancelOrder"
query: "mutation cancelOrder($id: ID!, $cancellationReasonId: ID!) {↵  cancelOrder(input: {id: $id, cancellationReasonId: $cancellationReasonId}) {↵    order {↵      id↵      isCancelled↵      __typename↵    }↵    __typename↵  }↵}↵"
variables: {id: "3045", cancellationReasonId: "1"}

编辑2:已经尝试过这样声明突变:

export const orderCancellation = gql`
mutation cancelOrder($input: CancelOrderInput!) {
cancelOrder(input: $input) {
order {
id,
isCancelled
}
}
}`;
this.apollo.mutate({
mutation: orderCancellation,
variables: {input: {id: orderId, cancellationReasonId: reasonId}}
});

我们找出了问题所在。我们的服务器已将突变的ID声明为Integer!,而不是ID!。这就是字符串ID处理查询而不处理突变的原因。谢谢你的努力!

相关内容

最新更新