当前位置: 首页 > 面试题库 >

如何将Apollo客户端中的突变链接在一起

闻人昊昊
2023-03-14
问题内容

我在状态中存储了一堆信息,我需要使用变异将其传递到我的graphQL服务器,但是在调用下一个变异之前,我需要使用每个变异的结果,因为我需要:

  • 在数据库中创建一个新对象
  • 使用为该对象生成的ID创建另一个对象
  • 修改原始对象以存储第二个对象生成的ID

我注意到apollo
Mutation组件具有onCompleted回调,但是我不知道如何使用此回调来触发另一个突变,或者这是否是解决我的问题的正确方法。我还研究了批量处理突变以一次全部发送出去,但似乎也不是解决方案。任何帮助,将不胜感激


问题答案:

正如您已经提到的,解决该问题的唯一方法是批量处理所有突变,查看相关问题!

实际上,编写它们并不坏,您可以执行以下操作:

const handleClick = async (mutation1Fn, mutation2Fn, mutation3Fn) => {
  const data1 = await mutation1Fn()
  const data2 = await mutation2Fn()
  const data3 = await mutation3Fn()
}

const Mutations = () => (
  <Composer
    components={[
      <Mutation mutation={mutation1} />,
      <Mutation mutation={mutation2} />,
      <Mutation mutation={mutation3} />
    ]}
  >
    {([mutation1Fn, mutation2Fn, mutation3Fn]) => (
      <button
        onClick={() => handleClick(mutation1Fn, mutation2Fn, mutation3Fn)}
      >
        exec!
      </button>
    )}
  </Composer>
)

让我知道您是否正在努力工作!



 类似资料:
  • 我在服务器上使用GraphQL和mongoose。 当发生验证错误时,GraphQL突变发送状态代码为200的响应。在客户端,响应如下所示: 我想使用阿波罗客户端突变promise的功能访问验证错误。类似: 如何做到这一点?

  • 我有以下代码,我正在尝试决定如何处理错误: 服务器发回一个GraphQL错误对象,并将其发回,使其出现在突变的块中。如果变异成功,组件的数据将使用参数更新,但我看不到处理错误的等价方法。 理想情况下,我希望更新块中的Apollo缓存,但在这一点上,我甚至不能向组件或状态注入道具。 最终的结果是在Register组件上设置一个prop/state,它显示了一个带有条件呈现的错误消息组件。一种方法可以

  • 我在两篇非常相似的帖子中回顾了解决方案:如何在React中的Apollo客户机突变组件中包装GraphQL突变,以及如何在Apollo客户机中将突变链在一起。我认为我对表单的使用给我的解决方案增加了一些额外的复杂性。虽然传递的值(competitionId)在handleOnSubmit函数中是可见的(如果我在handleOnSubmit中的createCompetition()之后进行控制台日志

  • 在后端,我进行了调试,并收到了请求,它根据客户机上设置的令牌查找用户,但随后什么也不做,只在我试图从应用程序发送时返回给我400,在graphiql浏览器上。 我错过了什么?非常感谢。

  • 我有一个例子,其中我有一个,它在graphql中定义了不同的实现。我可能无法共享确切的代码。但情况似乎是这样的: 有一个查询返回或类型作为响应。 响应可能包含以下内容: 或 我在客户端使用Apollo Client 3来查询数据,并有如下片段: 我查询的数据为: 由于这是的情况,正如Apollo client 3文档中所定义的,我们需要使用,以便在这种情况下匹配片段。出于缓存目的,我在Memory

  • 我试图在使用Apollo客户端的GraphQL查询中使用动态变量。我遵循了文档,但Apollo不断给我错误,说我的变量没有定义,最终以状态代码400回应。 然后,我会为每个变量得到一条错误消息,说明它尚未定义: [GraphQL错误]:消息:变量“$ID”未定义。,位置:[object object],[object object],路径:未定义 在这些错误消息中的每一条之后,我会得到一条状态代码