relay学习笔记(2)
1、Relay是一个数据架构
它运行在客户端,负责component向服务端请求数据,服务端当然也要遵循relay协议。
Relay有自己的store可以方便的缓存数据和高效的解析数据请求。
由于Relay有一个store负责统一的数据管理,Redux也有一个统一的store负责数据管理,因此他们两者是共存是比较困难的。如果使用了Redux,可以使用Apollo,它是基于Redux的
2、Relay GraphQL 惯例
GraphQL server定义了schema和schema对应的解析函数(resolver).Relay为GraphQL server定义了一些规则,以便使用Relay.
(1)多有的对象都有一个ID,无论什么type,都可以通过唯一的ID获取该对象.
我们可以查询任何对象通过node和ID.由于node是通用的,没有指明type,因此查询的时候需要使用fragment.
ID全局的唯一性。如果使用sql数据库,为了实现ID的唯一性,可以使用数据表名+id的实现id的全局唯一性,生成GUID。然后由服务器GUID根据生成Relay的GUID.
Relay使用node 接口来重新获取对象。
(2)在不同的对象之间(connectinos)和分页对象之间用统一的关系连接。
Relay使用connection和edge来描述对象的关系(类似一对多,多对多)。Relay规定在服务器中描述不同对象关系的时候使用connection和edge来表述,不是简单的使用一个列表来表述。
如表述:书和作者的关系:
a、Author包含一个connection和books(类别为AuthorBooksConnection,参数可以输入after first last before):
b、AuthorBooksConnection Type包含三个字段(pageInfo 类别pageInfo,edgs:AuthorBooksEdge,count:Int)
pageInfo Type:包含四个字段:
(3)使用统一的mutation结构改变数据。
为改变数据我们需要:
a、找到对应的mutation
b、定义输入的参数
c、定义输入完成后返回的结果。
浙公网安备 33010602011771号