reactjs - 更新具有多个定义的查询的中继存储

标签 reactjs offline relayjs

通常可以使用以下命令为具有单一定义的查询创建中继查询对象:

const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      name,
      email
    }
  }
;

我从通过网络发送的查询字符串中截取了查询字符串。它们通常有多个定义(例如查询、片段、突变、订阅)。我想为该类型的查询创建一个中继查询对象。以下代码抛出错误:

中继转换错误“您提供了一个名为“network”的 GraphQL 文档,其中包含 2 个定义,但它必须只有一个定义。”在文件“/Users/ankitshah/lyearnapp/src/network.js”中。如果最近添加了参数/字段/类型,请尝试更新您的 GraphQL 架构。

对于此代码:

const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      ...F0
    }
  }
  fragment F0 on User {
    id,
    name,
    email
  }
;

我想要这个是因为我想使用 Relay.Store.getStoreData().updateQueryPayload(queryObject, Payload) 函数更新 Relay Store。如有任何帮助,我们将不胜感激。

最佳答案

我遇到了同样的错误。您需要将查询压缩为没有片段,如下所示:

const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      name,
      email
    }
  }
;

然后就成功了。

关于reactjs - 更新具有多个定义的查询的中继存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236178/

相关文章:

javascript - 如何在侧边栏中制作可折叠列表

javascript - 为什么 Jest 单元测试被破坏了?

javascript - React类组件中的同步Meteor调用

offline - 首次连接JProfiler时如何跳过 "Waiting for a connection from the JProfiler GUI"的信息

ios - 如何使用 MapBox 读取离线 map

relayjs - 在 Relay 中实现 `startCursor` 和 `endCursor`

javascript - 基于 React 中的 Promise 呈现元素(Firebase 存储)

iphone - 使用 UIWebview for iPad 的离线应用程序

javascript - React Relay 和服务器端渲染

javascript - React Relay (react-relay) 与 Typescript 抛出 TypeError : Object prototype may only be an Object or null: undefined