2

我已经设置了一个基本的 Relay 突变来添加一个用户,但是一旦执行它就会返回这个错误/警告:

警告:writeRelayUpdatePayload():预期响应负载包括新创建的边缘“changedUserEdge”及其“节点”字段。您是否忘记更新“RANGE_ADD”突变配置?

我注意到 Relay 忽略了changedUserEdge突变有效负载上的节点,我不知道为什么。我查看了一些 Relay 示例,但突变的构造方式完全相同。

突变、我调用它的 React 组件和生成的查询可以在这个 gist中找到。

我使用graffiti- mongoose 来生成我的 GraphQL 模式。

4

1 回答 1

0

我不确定我是否能够提供帮助,您的要点对我来说似乎很好,所以我认为您的问题可能出在服务器上。

文档没有明确说明,但是当执行"RANGE_ADD"一种突变时,Relay 期望带有节点和光标的边缘。

游标是通过调用 Relay 生成的cursorForObjectInConnection(ArrayOfUsers, User),其中 User 可以通过调用在数组中找到ArrayOfUsers.indexOf(User)

因此,在我们的例子中,当添加一个用户时,我们调用 API 将其插入数据库,然后我们获取所有用户的列表并执行此操作以找到该功能的正确用户

// mutation > outputFields > changedUserEdge...

    let selectedUser = allUsers.find(u => u.uuid === newUser.uuid)[0];
    let cursor = cursorForObjectInConnection(allUsers, selectedUser);
    resolve({
        node: selectedUser,
        cursor,
    });

就我个人而言,我发现这是最难实现的一个,但是一旦你得到它,它就真的很简单。希望这可以帮助!

于 2016-04-08T08:41:44.023 回答