如何在没有参数的情况下进行graphql突变? (Vue 阿波罗)

Posted

技术标签:

【中文标题】如何在没有参数的情况下进行graphql突变? (Vue 阿波罗)【英文标题】:How to make a graphql mutation without parameters? (Vue Apollo) 【发布时间】:2020-05-19 16:56:48 【问题描述】:

我有一个 vue 应用程序,我在其中切换侧边栏菜单的宽度。我的计划是在本地 apollo 缓存中有一个 UI 对象,我可以在其中跟踪各种 UI 状态(例如侧边栏打开与关闭)。我有一个查询来检查侧边栏的状态和一个更新它的突变。但是由于某种原因,突变似乎需要我给它参数($id:ID),即使我在使用它时实际上并没有将任何东西传递给突变。当我不使用任何参数时,我应该如何编写突变?还是需要一个参数?尝试在下面删除参数和相应的错误消息。

像这样从两者中删除参数(尝试#1):

结果:

像这样删除括号(尝试#2):

结果:

【问题讨论】:

“似乎要求我给它参数”...意思是当你不这样做时,你会得到一个错误?或者看到一些意想不到的行为?您应该在问题中包含您看到的任何错误以及尽可能详细的信息。 @DanielRearden 更新了帖子以包含错误。从“toggleSidebarMutation”中删除参数时会发生这种情况 也去掉括号....mutation toggle... 【参考方案1】:

查询不带任何参数的字段时,应省略括号。换句话说,你会做

toggleSidebar

而不是

toggleSidebar()

后者在 GraphQL 中不是有效的语法。

【讨论】:

我仍然收到“错误:网络错误:无法解构未定义”的错误,使用空参数括号的解析器是否存在问题? 没关系,只需将解析器中的参数更新为空参数对象的名称,而不是我之前拥有的空解构对象。

以上是关于如何在没有参数的情况下进行graphql突变? (Vue 阿波罗)的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 useMutation 的情况下在 Next.js 中使用 GraphQL 突变

如何从单个反应组件中调用多个 graphql 突变?

GraphQL 查询/突变的响应

另一个突变的 GraphQL 结果

如何在 GraphQL 中使用可选参数实现突变?

为啥 GraphQl 说我忘记为突变发送参数 [重复]