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:包含四个字段:

count:代表edgs的数量。
所有的对象都是nodes和edgs组成的。

(3)使用统一的mutation结构改变数据。

为改变数据我们需要:

a、找到对应的mutation

b、定义输入的参数

c、定义输入完成后返回的结果。

 

posted @ 2018-09-01 17:43  tutu_python  阅读(614)  评论(0)    收藏  举报