Fac*_*ano 5 javascript postgresql filtering node.js supabase
我使用 supabase 和一个有 2 个表的数据库(与此问题有关)。表是teachers和users。两者分别有ID和id_teacher/ id_user。我正在处理一个查询,我需要让所有老师加入users表中,其中有一image列。我只需要获取not null 的teachers位置。user image
const query = supabase.from(`teachers`).select(
`
*,
id_user(
image
)
`
)
Run Code Online (Sandbox Code Playgroud)
此查询的作用是让教师加入用户表。因为我得到了我想要的回应。这是一个简短的例子。
{
"id": 560,
"teacher_experience": 9,
"id_user":{
"image": "example-image.jpg"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试使用一些过滤器来避免null images时。
query.not('id_user.image', 'eq', null)
query.not('id_user.image', 'in', null)
query.ilike('id_user.image', 'null')
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的正确形式是怎样的?
小智 18
现在这已经通过 PostgREST 9 实现了!
这是一个例子:
const { data, error } = await supabase
.from('messages')
.select('*, users!inner(*)')
.eq('users.username', 'Jane'
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你必须这样做id_user!inner(image)
来源:https ://supabase.com/blog/postgrest-9#resource-embedding-with-inner-joins
小智 3
只需创建一个view数据库即可解决此问题。Aview是查询的快捷方式,并且可以应用where子句。
在 supabase 上的 sql 编辑器中https://app.supabase.io/project/{your_project_id}/editor/sql
使用连接创建一个新视图;
CREATE VIEW teachers_view AS
SELECT
t.*,
iu.image as image
FROM teachers as t
LEFT JOIN id_user as iu WHERE t.id = iu.teacher_id;
Run Code Online (Sandbox Code Playgroud)
在这里阅读有关左连接的更多信息
并在应用程序使用中
supabase.from('teachers_view').select().neq('image', null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11134 次 |
| 最近记录: |