Supabase关联查询时如何过滤关联表image字段为null的记录
解决方案
问题原因
- Supabase 默认关联查询使用左外连接,即便没有匹配到
users表的记录,teachers表的对应记录依然会保留,此时id_user字段为null,你针对id_user.image的过滤条件对这类记录不生效 - 判断字段是否为null要使用
is操作符,你之前尝试的eq/in/ilike都不符合SQL语法规范,过滤逻辑无法生效
正确实现
你可以通过强制内连接+空值判断实现需求,代码如下:
const { data, error } = await supabase .from('teachers') .select(` *, id_user!inner( image ) `) .not('id_user.image', 'is', null)
逻辑说明
- 关联字段
id_user后加!inner后缀,强制将关联逻辑改为内连接,第一步就直接排除所有没有关联到users表的教师记录,也就是不会再返回id_user为null的条目 - 新增
not('id_user.image', 'is', null)过滤条件,第二步排除关联用户存在但image字段为null的记录
最终返回的结果就是你需要的、关联用户有有效image字段的教师数据。
内容的提问来源于stack exchange,提问作者Facundo Serrano
相关产品推荐
相关产品推荐

