如何用Supabase查询当前用户未关注的所有用户?
获取当前用户未关注的全部用户
数据表结构
- Users表:
id(主键)、firstName、lastName、userName、email - Followers表:
user(外键关联Users.id)、following(外键关联Users.id)
你当前的查询语句是获取已关注的用户,要获取未关注的用户,可以用以下两种方法实现:
方法1:使用NOT IN子查询
let { data: nonFollowedUsers, error } = await supabase .from("Users") .select("id, firstName, lastName, userName, email") .neq("id", user.id) // 排除当前用户自身 .not("id", "in", () => supabase.from("Followers").select("following").eq("user", user.id) );
方法2:左连接筛选无匹配记录
let { data: nonFollowedUsers, error } = await supabase .from("Users") .select("*, followers!followers_following_fkey(following)") .neq("id", user.id) .is("followers.following", null);
关键说明
- 两种方法都加入了
.neq("id", user.id)来排除当前用户,避免把自己显示在未关注列表里 - 方法1通过子查询拿到当前用户已关注的所有用户ID,再用
NOT IN排除这些用户 - 方法2通过左连接Followers表,筛选出没有对应关注关系的用户(即关联的followers记录为空的项)
内容的提问来源于stack exchange,提问作者falcon
相关产品推荐
相关产品推荐

