中继生成的变异查询缺少某些字段

时间:2016-03-30 12:29:06

标签: javascript node.js reactjs relay

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

  

警告:writeRelayUpdatePayload():预期的响应有效负载   包括新创建的边'changedUserEdge'及其'node'字段。   您是否忘记更新'RANGE_ADD'变异配置?

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

突变,我调用它的React组件,可以找到生成的查询in this gist

我使用graffiti-mongoose生成了我的GraphQL架构。

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,在添加用户的情况下,我们调用API将其插入数据库,然后我们获取所有用户的列表,然后执行此操作以找到函数的正确用户

// mutation > outputFields > changedUserEdge...

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

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