Apollo + Angular 突变不适用于变量
Posted
技术标签:
【中文标题】Apollo + Angular 突变不适用于变量【英文标题】:Apollo + Angular mutation is not working with variables 【发布时间】:2021-02-17 11:43:37 【问题描述】:我在使用变量创建突变时遇到了麻烦。我可以让它直接包含值,如下所示:
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
);
【问题讨论】:
错误/缺失的值传递到变量中...控制台在突变调用之前记录它们...检查网络请求正文是否正确传递值 感谢您的回复!我在上面添加了请求有效负载。够了吗? 整数与字符串? @xadm 对不起,我不明白cancelOrder(input:....... id: 2649, cancellationReasonId: 1
... variables: .... id: "3045", cancellationReasonId: "1"
... id 2649 vs id "3045"
【参考方案1】:
我们找出问题所在。我们的服务器已将突变的 ID 声明为 Integer!,而不是 ID!。这是字符串 id 处理查询但不处理突变的原因。感谢您的努力!
【讨论】:
以上是关于Apollo + Angular 突变不适用于变量的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular Apollo Graphql 中访问突变结果