Supabase如何查询同一个表两次

Ken*_* Jr 2 postgresql supabase

我最近一直在尝试 Supabase,并尝试制作一个类似 Twitter 的“回复@user”评论功能。

因此,我在下面附加了一个数据库 ERD 供参考,正如您所看到的,每个评论都有一个用户 ID 和一个“replyingTo”,它还存储正在回复的评论的用户 ID。

现在我可以在这两个表之间单独查询,因此我可以非常轻松地获取评论的用户以及评论,但是,当我尝试获取评论创建者的用户个人资料和replyingTo的个人资料时,我收到以下错误 -

Could not embed because more than one relationship was found for 'Comments' and 'profiles'
Run Code Online (Sandbox Code Playgroud)

我对 PostgreSQL 不太有经验,所以我不知道如何做这个范围的事情,这是我当前使用的以下代码,它给了我上面描述的错误。

                 const { data, error } = await supabase
                .from('Comments')
                .select('ReplyingTo, profiles:profiles(id), profiles:profiles(id)')
                .eq('commentid', cmtid)
Run Code Online (Sandbox Code Playgroud)

我的预期结果是获取评论、创建评论的用户个人资料以及收到回复的用户的个人资料。

感谢您的时间和耐心。

数据库ERD

Ste*_*vez 6

正如错误所述,问题在于profiles和之间有两种关系Comments对于这种情况,您需要按照PostgREST 文档中的指定消除歧义(要用于连接的外键列)。对于supabase js客户端,它应该是这样的:

 const { data, error } = await supabase
.from('Comments')
.select('ReplyingTo, profiles1:profiles!userid(*), profiles2:profiles!ReplyingTo(*)')
.eq('commentid', cmtid)
Run Code Online (Sandbox Code Playgroud)