跳到主要内容

存储额外的用户信息

系统用户表 vs 自定义用户表

使用云开发登录认证后,用户的基础信息(如 uid、登录方式、基础资料等)会自动存储在系统维护的用户表中。如果需要存储业务相关的额外用户信息(如地址、邮箱、会员等级等),推荐创建自定义用户表

系统用户表:

  • 由云开发自动维护
  • 存储用户身份认证相关信息(uidnamegender、登录方式等)
  • 通过 auth.currentUser 获取
  • 不建议直接在此表添加业务字段

自定义用户表(推荐):

  • 开发者自行创建和维护(如 users 集合)
  • 存储业务相关的扩展信息(地址、邮箱、积分、会员等级等)
  • 通过 uid 与系统用户表关联
  • 灵活扩展字段,满足业务需求

实现方式

1. 创建自定义用户表

云开发平台/文档型数据库 创建 users 集合,设计以下结构:

{
_id: "用户记录ID",
uid: "云开发用户ID(与系统用户表关联)",
address: "用户地址",
email: "邮箱",
phone: "手机号",
vip_level: "会员等级",
createTime: "创建时间"
}

2. 用户注册时创建扩展信息

import cloudbase from '@cloudbase/js-sdk';

const app = cloudbase.init({
env: 'your-env-id',
});

const auth = app.auth();
const db = app.database();

// 用户注册成功后
auth.signUp({
phone_number: '+86 13800000000',
verification_code: '123456',
verification_token: 'token',
name: '张三',
}).then(async () => {
// 获取当前用户 uid
const user = auth.currentUser;

// 在自定义用户表中创建扩展信息
await db.collection('users').add({
uid: user.uid, // 关联系统用户表
address: '北京市朝阳区',
email: 'zhangsan@example.com',
phone: '+86 13800000000',
vip_level: 1,
createTime: new Date(),
});

console.log('用户注册并创建扩展信息成功');
});

3. 查询用户完整信息

// 获取系统用户信息
const user = auth.currentUser;
console.log('系统用户信息:', user.uid, user.name);

// 获取自定义扩展信息
const { data } = await db.collection('users').where({ uid: user.uid }).get();

console.log('用户扩展信息:', data[0].address, data[0].email);

4. 更新用户扩展信息

// 更新自定义用户表中的信息
await db.collection('users').where({ uid: auth.currentUser.uid }).update({
address: '上海市浦东新区',
vip_level: 2,
});

最佳实践

  • 分离关注点: 系统用户表专注于身份认证,自定义用户表专注于业务逻辑
  • 使用 uid 关联: 通过 uid 字段在两个表之间建立关联关系
  • 合理设计字段: 根据业务需求设计自定义用户表的字段结构
  • 注意数据同步: 当用户信息更新时,注意同步更新相关的数据表

相关文档