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

无法从Supabase的profiles1表获取数据,请求排查问题

问题排查与修复方案

1. 渲染页面核心问题:getUser() 未异步等待

supabase.auth.getUser() 是异步方法,直接调用会返回Promise对象,而非用户数据,导致user.id始终为undefined,后续查询条件不成立,自然无法获取数据。

修复后的渲染页面查询逻辑:

const fetchUserInfo = async () => {
  try {
    // 用await获取真实的用户认证数据
    const { data: { user }, error: authError } = await supabase.auth.getUser();

    if (authError) {
      console.error('获取用户认证信息失败:', authError.message);
      return;
    }

    if (user?.id) { 
      const { data, error } = await supabase
        .from('profiles1') 
        .select('*')
        .eq('user_id', user.id)
        .single();

      if (error) {
        console.error('获取用户信息失败:', error.message);
      } else {
        setUserInfo(data);
      }
    } else {
      setUserInfo(null);
    }
  } catch (error) {
    console.error('获取用户信息出错:', error.message);
  }
};

2. 管理页面:确认user_id关联逻辑

你提到数据库会自动插入user_id,需先验证该自动逻辑是否生效:

  • 检查profiles1表的user_id字段是否设置了默认值为auth.uid()
  • 或是否存在触发器自动填充当前认证用户ID

若自动逻辑未生效,需手动在插入时传入当前用户ID:

修复后的管理页面插入逻辑:

const handleSaveResume = async () => {
  try {
    const { data: { user }, error: authError } = await supabase.auth.getUser();
    if (authError) {
      Alert.alert('错误', '请先完成登录');
      return;
    }

    const { data, error } = await supabase.from('profiles1').insert([
      {
        name,
        phoneNumber,
        email,
        education,
        workExperience,
        skills,
        user_id: user.id // 手动关联当前用户ID
      },
    ]);

    if (error) {
      Alert.alert('错误', error.message);
    } else {
      Alert.alert('成功', '简历已保存');
    }
  } catch (error) {
    console.error('保存简历出错:', error.message);
  }
};

3. 额外检查:行级安全策略(RLS)

若profiles1表开启了行级安全,需确保策略允许:

  • 认证用户插入自身数据
  • 认证用户查询自身数据

可在Supabase SQL编辑器中添加如下策略:

-- 允许认证用户插入自己的简历
CREATE POLICY "用户可插入自身简历" ON profiles1
FOR INSERT TO authenticated
WITH CHECK (user_id = auth.uid());

-- 允许认证用户查看自己的简历
CREATE POLICY "用户可查看自身简历" ON profiles1
FOR SELECT TO authenticated
USING (user_id = auth.uid());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:22:05