Supabase 查询所有不喜欢的关注用户的帖子

Supabase query all posts from followed users that are not liked

我正在尝试从关注的用户那里获取所有帖子,这样帖子还没有被关注的用户(又名我)点赞。 我如何在 supabase 中创建一个模式并查询这样的东西?

我现在的表是这样的:

User Table {
  id        
  username 
}

Follows table {
  followerId 
  followingId 
}

Post table {
  id
  title 
}

liked_by table {
 user_id,
 post_id,
}

假设 youru post table 也有 user_id 列,其中 user_id 代表创建 post 的用户的 user_id,您可以创建一个看起来像这样的 postgres 函数:


create or replace function not_liked_posts()
returns table(post_id uuid, title text)
as
$func$
    select
        post.id as post_id,
        post.title
    from post
    inner join users on post.user_id = users.id
    where post.user_id in (select followerId from follows where auth.uid() = followingId)
    where post.id not in (select post_id from liked_by where user_id = auth.uid());
$func$
language sql security invoker;

请注意,auth.uid() 是 Supabase 提供的开箱即用的功能,用于获取当前登录用户的用户 ID。

创建上述函数后,您应该可以使用 Supabase 的 rpc() 方法调用它,如下所示:

const { data, error } = await supabase
  .rpc('not_liked_posts')