PostgREST通过cURL GET请求过滤外键遇问题求助
PostgREST API外键过滤与空字段优化方案
1. 排除无关联的主表记录(过滤空外键)
如果要去掉owner_foreign_key为空或无匹配Vehicles记录的Orders,直接在查询参数中添加外键非空条件:
curl "/rest/v1/orders?owner_foreign_key=not.is.null&owner_foreign_key.owner_name=eq.{owner_name}&select=SKU,owner_foreign_key(owner_name)"
该条件会直接过滤掉外键无效的订单,返回结果中不会出现空的owner_foreign_key字段。
2. 排除关联表的空数组字段
如果是Vehicles表中owner_name数组为空(即[])的情况,需要添加数组非空过滤:
curl "/rest/v1/orders?owner_foreign_key.owner_name=not.is.empty&owner_foreign_key.owner_name=eq.{owner_name}&select=SKU,owner_foreign_key(owner_name)"
PostgREST支持is.empty操作符判断数组是否为空,搭配not即可排除空数组的关联记录。
3. 用内连接优化返回结构
在select语句中给关联表添加!inner修饰符,强制使用内连接查询,自动过滤无匹配关联的主表数据,同时避免返回空的嵌套字段:
curl "/rest/v1/orders?owner_foreign_key.owner_name=eq.{owner_name}&select=SKU,owner_foreign_key!inner(owner_name)"
这种方式更简洁,既实现了过滤,又优化了返回的JSON结构,不会出现空的owner_foreign_key嵌套对象。
内容的提问来源于stack exchange,提问作者Evaldas Sedys
相关产品推荐
相关产品推荐

