我正在使用一个有2个表的数据库的supabase表是teachers
和users
。这两个表分别有ID
和id_teacher
/id_user
。我正在处理一个查询,需要获取所有教师,加入users
表,其中有一个image
列。我只需要得到teachers
,其中user
有一个非空image
。
const query = supabase.from(`teachers`).select(
`
*,
id_user(
image
)
`
)
这个查询可以让教师加入用户表。因为我得到了我想要的响应。这是一个简短的例子。
{
"id": 560,
"teacher_experience": 9,
"id_user":{
"image": "example-image.jpg"
}
}
问题是当我试图使用一些过滤器来避免nullimages
时。
query.not('id_user.image', 'eq', null)
query.not('id_user.image', 'in', null)
query.ilike('id_user.image', 'null')
这只是一个过滤器的例子,我试图避免教师的user.image
有一个空值。因为,我不想得到整个项目,但我得到了一个项目与id_user = null
{
"id": 560,
"teacher_experience": 9,
"id_user": null // In this case image is null but still giving me the user
}
解决这个问题的正确形式是什么?
6条答案
按热度按时间1bqhqjot1#
Just create在数据库中添加一个
view
来解决这个问题。view
是查询的快捷方式,可以应用where
子句。在supbase https://app.supabase.io/project/{your_project_id}/editor/sql上的SQL编辑器中
创建具有联接的新视图;
在此阅读更多关于左连接的信息
并且在应用中
eulz3vhy2#
为我工作!
如果您想检查NULL,这已经够奇怪的了
似乎是解决方案。不知道为什么不一致
osh3o9ms3#
这是不可能的atm。你可以在这里看到问题的状态。有些可能是使用
views
在另一个表中启动查询。laximzn54#
Supabase客户机使用
postgrest
,因此您可以在查询中使用各种运算符。kmbjn2e35#
这个特性是在最近发布的PostgREST 9支持中出现的。您必须使用
!inner
关键字,现在您可以过滤顶级表的行。68bkxrlz6#
这已经在PostgREST 9中实现了!
下面是一个例子:
在您的情况下,您必须执行
id_user!inner(image)
图片来源:www.example.comhttps://supabase.com/blog/postgrest-9#resource-embedding-with-inner-joins