Graphql 中继突变:突变分页关联
在很多情况下,我们会发生突变,其中存在一对多或多对多的关联,我们需要进行突变,并且该关联以分页列表的形式暴露于查询中 有几个关键要求:Graphql 中继突变:突变分页关联,graphql,relayjs,Graphql,Relayjs,在很多情况下,我们会发生突变,其中存在一对多或多对多的关联,我们需要进行突变,并且该关联以分页列表的形式暴露于查询中 有几个关键要求: 客户端必须能够删除、添加和更新关联元素 在某些情况下,关联的顺序很重要,在这种情况下,客户机还必须能够对元素重新排序 不那么重要: 客户端应能够在创建父级时指定关联(例如,在创建产品的同时创建一组有序的变体) 客户机应该能够使用某种形式的事务原子性立即删除、添加、更新和重新排序关联元素 客户端不必为添加或删除单个元素而对整个当前关联进行分页 这个问题有很
- 客户端必须能够删除、添加和更新关联元素
- 在某些情况下,关联的顺序很重要,在这种情况下,客户机还必须能够对元素重新排序
- 客户端应能够在创建父级时指定关联(例如,在创建产品的同时创建一组有序的变体)
- 客户机应该能够使用某种形式的事务原子性立即删除、添加、更新和重新排序关联元素
- 客户端不必为添加或删除单个元素而对整个当前关联进行分页
Facebook是如何处理这些类型的突变的?你的方式是什么?谢谢 所有这些方法之间肯定存在权衡,因此选择一种方法实际上取决于我试图构建的内容 Facebook模式中最常见的情况有两个很好的限制:
- 禁止重新订购
- 无批量操作
注释编辑
和注释删除
对于这种情况,我们得出了共同的模式:
- 对于
和创建
(或编辑
)突变,突变解析到的对象通常包含已修改的边(其中我使用边的意义与我们在中使用边的意义相同)。从该边缘,您可以轻松地获得修改后的对象。。。但您也可以获得任何可能需要的边缘数据更新
通常只返回已删除对象的ID;如果客户机在输入中提供了该ID,那么这对客户机来说是一种纯粹的方便,但是如果删除输入获取了一些其他信息,并且服务器将其转换为ID,那么这将非常有用,在这种情况下,返回删除的ID允许客户机知道删除了哪个对象delete
commentCreate(输入:{text:“Hello World”,回复:[{text:“回复1”},{text:“回复2”}]})
其中,我正在重用commentCreate
用作回复所接受的复数输入类型的输入类型
对于需要重新排序或批量操作的情况,这听起来像是主要情况