Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 2.19 KB

File metadata and controls

82 lines (62 loc) · 2.19 KB

邀请码问题 - 最简解决方案

问题根源

数据问题,不是代码问题:

  • 后端已经正确:handleGetMe() 返回 invite_code ✅
  • 前端已经正确:{user?.invite_code && (...)} 显示逻辑 ✅
  • 数据有问题:老用户的 invite_code 在数据库中为 NULL ❌

解决方案

只需一条 SQL 语句,修复数据库中的老用户记录

在 Neon PostgreSQL 控制台或任何 PostgreSQL 客户端运行:

UPDATE users
SET invite_code = upper(substr(md5(id || ':' || created_at::text || ':' || random()::text), 1, 20))
WHERE (invite_code IS NULL OR invite_code = '')
  AND email IS NOT NULL;

执行步骤

  1. 登录 Neon 数据库控制台

  2. 运行脚本

    # 或在本地用 psql 运行
    psql $DATABASE_URL << 'EOF'
    UPDATE users
    SET invite_code = upper(substr(md5(id || ':' || created_at::text || ':' || random()::text), 1, 20))
    WHERE (invite_code IS NULL OR invite_code = '')
      AND email IS NOT NULL;
    EOF
  3. 验证

    -- 检查是否还有缺少邀请码的用户
    SELECT COUNT(*) FROM users WHERE invite_code IS NULL OR invite_code = '';
    
    -- 应该返回 0

预期结果

更新前:
✅ 登陆响应返回 invite_code: ""(空)
❌ 邀请码不显示在 /profile 页面

更新后:
✅ 登陆响应返回 invite_code: "ABC123XYZ..."(有值)
✅ 邀请码正确显示在 /profile 页面

为什么这样做就够了?

组件 状态 说明
后端 API handleGetMe() 已经在返回 invite_code 字段
前端逻辑 UserProfilePage 已经有 {user?.invite_code && (...)}
部署 前端在 Vercel,后端在 Replit
数据 老用户记录中 invite_code 为 NULL

只需要修复数据,其他一切都正常工作!

哲学思考

这就是 "保持简单" 的力量:

  • ❌ 不需要修改代码
  • ❌ 不需要重新编译
  • ❌ 不需要重新部署
  • ✅ 只需要一条 SQL 语句
  • ✅ 数据修复后立即生效
  • ✅ 零停机时间

结果: 最小化复杂性,最大化效率。