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')
我正在尝试从关注的用户那里获取所有帖子,这样帖子还没有被关注的用户(又名我)点赞。 我如何在 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')