type
status
date
slug
summary
tags
category
icon
password
什么是 graphql
简单的说: graphql是针对接口的查询语言, 平时我们做接口, 需要考虑查询条件的组合, 但是有了graphql, 只需要规定好query参数, 就可以使用graphql自由组合 query 条件, api 查询的自由度和后期的可维护性大大提高,详细信息可以参考graphql doc。
举个例子
打开 spaceX的发射信息查询接口: spaceX land api, 从左至右是query参数, query 条件组合, 查询结果。
查询最近的两次发射,点击任务名称(mission_name),发射时间(launch_date_local),发射地点(launch_site), 任务的链接(links), 火箭信息(rocket), 接收船信息(ships), 点击左边的 query 参数组合条件之后查询:
十分酷炫。
ent实体的构建,数据新增,图形遍历
注:中间省略操作过程,重点介绍概念,操作参考ent doc
- 构建:
构建实体分为两个基本部分: Fields是实体结构字段, Edges是实体关系,field包含所有的数据类型定义。
Fields 实体关系:简单理解,是拥有与被拥有的关系, 拥有就是edge.To, 被拥有就是edge.From, 比如一个 user 可以拥有很多辆汽车(一对多),一个汽车只能被一个人拥有(一对一),注意代码中的cars,owner就是边(edge)的名称, 有了 edge,就可以利用这些规则,构建复杂的图结构。
- 数据新增:
2.1 自动迁移
类似 gorm 的auto_migrate,使用client.Schema.Create(ctx),根据field 的定义,自动生成数据表结构。
2.2 创建实体
- 图形遍历
建立如下的图结构,一个机构名叫GitHub,机构下面仅有个User 类型的管理员admin,User 也是机构的用户,同时User也有朋友关系,并且 User 可以拥有多个宠物 Pet,宠物之间也有朋友关系。
开始遍历: 需要找到GitHub机构 -> 管理员 -> 管理员的朋友 -> 宠物 -> 宠物的朋友 -> 宠物朋友的主人 User
十分清爽
- 作者:Roger
- 链接:https://complexity.buzz/article/e0bc1f69-debb-4725-88e0-f061342dc6cf
- 声明:没有版权,就说是你写的