用户可以相互关注。我们可以在用户之间创建一个关注的图形关系,通过这个关系可以得到用户关注的用户列表,还有用户关注的用户发布的内容列表,也可以得到用户的粉丝列表。
用一个 RELATE 声明,让 user:wanghao ,follow 一下 user:libai,再让 user:dufu 关注一下 user:libai。然后让 user:libai 再关注一下 user:dufu。
关注列表
下面我们需要得到 wanghao 这个用户关注的用户列表。SELECT * FROM user,用 WHERE 设置条件。<-follow<-(user WHERE id = user:wanghao)。这条查询得到的结果就是 user:wanghao 这个用户关注的用户列表。
粉丝列表
SELECT * FROM user,用 WHERE 设置条件,向右的箭头,然后是 follow,向右箭头,括号 user,where id 等于 user:libai。这回查询的结果就是 libai 这个用户的粉丝列表,也就是关注李白的用户。
互相关注
在查询结果里面,可以包含一个表示是否互相关注的属性。 在 SELECT 后面,加上一个左箭头,然后是 follow,再用一个左箭头,括号 user where id 等于 user:libai。
count 一下这个关系,判断一下是否大于 0,起个名字叫 isFollowed。
现在返回的结果里面就会包含一个 isFollowed,它表示的是 libai 这个用户是否已经关注了这个用户。
关注的人发布的内容
再写一段查询,获取到用户关注的人发布的内容列表,SELECT * FROM post,用 WHERE 指定一下查询条件,user<-follow<-(user WHERE id = user:wanghao)。
现在得到的响应数据就是 user:wanghao 这个用户所关注的人发布的内容列表。
因为 user:wanghao 只关注了李白,所以这些内容都是李白发布的。在上面可以再让 user:wanghao ,follow 一下 uesr:dufu。
这次这个内容列表里的内容的作者,是李白,或者杜甫。因为这两个用户都是 user:wanghao 这个用户关注的用户。