在Supabase与Next.js中无法获取全列数据的问题求助
解决Supabase查询全列返回空数组的问题
先打印错误信息排查原因
在查询代码里加上错误输出,确认具体问题:const supabase = createClient(process.env.NEXT_PUBLIC_SUPABASE_URL, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY); let { data: shows, error } = await supabase.from('shows').select('*'); if (error) console.error('查询错误:', error); // 查看具体错误提示 console.log(shows);如果错误提示是权限相关,那大概率是Row Level Security(RLS)策略限制了列的访问。
检查并调整Supabase的RLS策略
- 登录Supabase控制台,找到你的项目,进入
数据库->表,选择shows表 - 切换到
策略标签,查看针对SELECT操作的现有策略 - 如果策略中指定了只能读取特定列(比如只允许
city列),修改策略为允许读取所有列;如果没有合适的策略,创建新策略:CREATE POLICY "允许匿名用户读取shows表所有列" ON shows FOR SELECT USING (true); - 确保
shows表的RLS处于开启状态(默认是开启的,若之前关闭过需重新开启)
- 登录Supabase控制台,找到你的项目,进入
验证匿名用户的表权限
在Supabase控制台的SQL编辑器中执行以下语句,确保匿名角色(anon)拥有shows表的全列SELECT权限:GRANT SELECT ON shows TO anon;
完成以上操作后,重新执行select('*')查询,即可获取到表的全列数据。
内容的提问来源于stack exchange,提问作者wpix
相关产品推荐
相关产品推荐

