新建一个目录,名字是“应用实践”,再复制一份请求,名字改成“用户与头像”,把这个请求放在这个新创建的目录里面。
在应用里,用户可以上传头像,我们可以先创建一条头像数据,然后再用一个 edge 关系,关联一下用户与头像,可以再更新一下用户数据。
CREATE avatar ,在 CONTENT 后面设置一下数据对象,手工设置一下数据的 id,值是 avatar:1,再添加一个 file 属性,值可以用 rand::uuid() 生成一个随机的 uuid。
RELATE
下面再用 RELATE 创建一个 edge 关系,user:libai->create->avatar:1 ,通过这个关系我们可以知道 avatar:1 是 user:libai 创建的。通过这个 edge 关系,可以查询到用户的头像。
edge
SELECT * FROM user,在选择的字段里面,再添加一个 ->create->avatar AS avatar,在李白这个用户数据里现在会有一个 avatar 属性,它的值是一组 avatar 数据的 id,也就是这个用户创建的 avatar 数据的 id。想得到具体的 avatar 数据,可以在查询里 FETCH 一下 avatar 这个字段。
子查询
再试一下用一条子查询得到用户的头像。一组括号,括号外面用 AS 起个名字叫 avatar,在括号里面是写一段子查询,SELECT * FROM avatar,用 WHERE 设置条件,$parent->create->avatar。
然后再用 ORDER BY 排下顺序,排序字段可以设置成 id,排序方式是 DESC,再用 LIMIT 限制只返回一个结果。
现在得到的用户数据里面,这个 avatar 属性的值就是用户的头像。
更新文档
为了更方便,我们可以在用户创建了头像数据以后,再修改一下 user 数据,在里面添加一个 avatar 属性,链接一个 avatar 数据。
执行一下 UPDATE user:libai ,SET avatar = avatar:1。
这样如果想在返回的用户数据里包含具体的头像,可以执行 SELECT * FROM user:libai FETCH avatar。