You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NestJS与Supabase执行Select查询返回空数据问题排查

问题排查与解决

1. 优先检查Supabase行级安全(RLS)规则

插入功能正常说明Supabase客户端配置没问题,但查询返回空数组大概率是行级安全规则拦截了读取操作:

  • 登录Supabase控制台,找到colegios表
  • 进入「权限」标签:
    • 若RLS处于启用状态,需添加允许读取的规则,示例SQL:
      CREATE POLICY "允许读取colegios表数据" ON "public"."colegios"
      FOR SELECT USING (true);
      
    • 可临时关闭RLS测试(仅用于排查,生产环境不建议):
      ALTER TABLE "colegios" DISABLE ROW LEVEL SECURITY;
      

2. 修正控制器模板变量的返回逻辑

你的控制器直接返回数组,但@Render装饰器需要传入包含模板变量的对象,EJS才能正确识别data变量:

// App.controller.ts 修改后
@Get()
@Render('Listar.ejs')
async findAll(): Promise<{ data: colegio[] }> {
  const data = await this.appService.mostrarColegio();
  console.log(data); // 避免重复调用服务方法
  return { data }; // 返回包含data属性的对象
}

3. 增强查询语句的可调试性

给查询语句明确指定字段,并打印完整错误信息,方便排查:

// App.service.ts 修改后
async mostrarColegio() {
  const { data, error } = await this.supabase
    .from('colegios')
    .select('*'); // 明确查询所有字段
  if (error) {
    console.error('Supabase查询错误详情:', error);
    throw new Error(error.message);
  }
  console.log('查询结果:', data);
  return data;
}

4. 确认表中存在有效数据

直接在Supabase控制台的「数据」标签查看colegios表,确认你插入的teste1等记录是否真实存在。


内容的提问来源于stack exchange,提问作者Ricardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:37:18