0

我在理解 Relay 中胖查询的概念时仍然有些麻烦,尤其是关于确定要重新获取哪些数据的交集逻辑部分。

到目前为止,我已经构建了一个简单的分层数据结构,它带有一个UserType作为根查询(名为viewer),它有许多projects(类型ProjectConnectionType)与之关联。每个项目都有另一个projects字段(也是 type ProjectConnectionType)来模拟任意嵌套的子项目层次结构。

我还有两个更高阶的 React 组件ProjectList,并ProjectListItem通过有条件地扩展片段(通过expanded在我的列表项组件中使用 Relay 变量)来呈现这个结构。

到目前为止,这工作正常,我对此非常满意。棘手的部分现在是AddProject突变。我创建了一个突变,它采用名称和parentProjectId作为输入(对于根项目可能为空),并在服务器端的正确位置创建一个新节点。之后,它应该返回新的projectEdgesRANGE_ADD之后使用),以及parentProjectorviewer以便我也可以在subprojectCount那里更新。

对于查看器(唯一的全局根查询点),一切正常。Relay 正确计算交集并从服务器请求新数据。但是当我尝试添加一个子项目时,我一直得到一个完全空的响应,没有任何输出字段(除了突变 id)。我的猜测是,Relay 似乎因为不知道如何相应地映射该parentProject字段而弄错了交叉点。我已经尝试为其添加FIELDS_CHANGE配置以及parentProject: node(id: "$parentProjectId")在我的胖查询中进行查询(这也不起作用)。

我错过了什么?我现在已经阅读了几次文档,但我仍然不理解突变的概念,我觉得已经很愚蠢了。

4

0 回答 0