graphql 突变不返回嵌套字段
Posted
技术标签:
【中文标题】graphql 突变不返回嵌套字段【英文标题】:graphql mutation dosen't return nesetd fields 【发布时间】:2020-02-25 02:21:06 【问题描述】:如何在保留类型名称的同时从突变中返回嵌套字段
我在后端使用 prisma
和 graphql-yoga
async createComment(parent, args, ctx, info)
console.log(args);
const comment = await ctx.db.mutation.createComment(
data:
...args,
user:
connect:
id: ctx.request.userId
,
item:
connect:
id: args.itemId
,
info
);
console.log(comment);
ctx.pubsub.publish('PUBSUB_NEW_COMMENT', newComment: comment );
return comment;
在我的情况下,突变响应剂量返回嵌套字段 user
和 item
是 null
【问题讨论】:
你返回调用ctx.db.mutation.createComment
的“结果”,我们需要看看这个函数。
您确认user
和item
是否真的在评论中设置? connect
中传递的 id 可能未定义或不正确。
我确实通过在客户端 xD 上的 gql 中添加用户和项目字段来解决这个问题,更改也会影响发送到订阅的有效负载
【参考方案1】:
我确实通过将item
和user
字段添加到客户端中的gql
突变来解决这个问题
const COMMENT_MUTATION = gql`
mutation COMMENT_MUTATION($text: String, $itemId: String)
createComment(text: $text, itemId: $itemId)
id
text
user // adding user field here
id
name
item adding item field here
id
title
user
id
name
`;
我不明白这是怎么发生的,但因为它也会影响服务器上的订阅负载 基本上从 gql 突变中添加或删除字段也会改变去订阅的有效负载
【讨论】:
以上是关于graphql 突变不返回嵌套字段的主要内容,如果未能解决你的问题,请参考以下文章
在 Graphcool / GraphQL 中发布更新突变时如何“更新”数组/嵌套字段?
Apollo / GraphQL / Prisma“登录”突变不会返回所有用户字段