如何在Supabase中简洁实现.eq语句的多角色权限查询控制
解决方案
你可以利用Supabase查询构建器的链式调用特性,只在非管理员用户的情况下追加userId匹配条件,这样不用重复编写整个查询逻辑:
let query = supabase.from("posts").select("*").eq("id", id); if (user.role !== "admin") { query = query.eq("userId", user.id); } const { data: post } = await query.single();
原理说明
Supabase的eq方法会返回一个新的查询实例,所以你可以先创建基础查询(匹配id),再根据用户角色决定是否添加userId的过滤条件。这种写法既保持了代码简洁,又避免了重复的查询代码。
原来用"*"作为匹配符无效,是因为eq是精确匹配,它只会把"*"当作普通字符串去匹配userId字段的值,不会解析成通配符。
内容的提问来源于stack exchange,提问作者Sventies
相关产品推荐
相关产品推荐

