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

Auth0用户元数据地址类型错误求助(仅允许字符串)

解决方案

针对你遇到的Auth0 user_metadata字段类型限制(仅允许字符串)和字段上限(10个)问题,提供两种可行方案:

方案一:将地址对象序列化为JSON字符串

把地址对象转为JSON字符串存储,既符合Auth0的字符串类型要求,又能将所有地址字段打包为一个元数据字段,不占用额外名额。

修改后的注册代码

signup({
  name: `${data.given_name} ${data.family_name}`,
  given_name: data.given_name,
  family_name: data.family_name,
  connection: AUTH0_CONNECTION,
  username: data.email,
  email: data.email,
  password: data.password,
  userMetadata: {
    accept_terms: data.accept_terms.toString(),
    job_title: data.job_title,
    certificate_image_id: data.certificate_image_id,
    company_name: data.company_name,
    phone_number: data.phone_number,
    certificate_image_url: data.certificate_image_url,
    website: data.website,
    address: JSON.stringify({
      zipcode: data.zipcode,
      address1: data.address1,
      address2: data.address2,
      city: data.city,
      country: data.country,
      state: data.state,
    }),
  },
})
  .then((response) => {
    console.log("You're successfully Registered!");
  })
  .catch(() => {
    console.log("Error Occured!");
  })
  .finally();

读取地址数据

获取用户数据时,需要将JSON字符串解析为对象:

// 假设已获取到用户对象user
const userAddress = JSON.parse(user.user_metadata.address);
// 访问地址字段示例
console.log(userAddress.city, userAddress.zipcode);

注意事项

  • 确保地址字段均为可JSON序列化类型(字符串、数字等),避免循环引用或不可序列化值;
  • 若字段存在null/undefined,序列化后会转为null,读取时需按需处理。

方案二:使用Auth0自定义用户属性(仅数据库连接支持)

如果你的Auth0连接是数据库类型,可直接在控制台配置自定义地址字段,将地址字段作为顶层用户属性存储,无需依赖user_metadata。

配置步骤

  1. 登录Auth0控制台,进入目标数据库连接;
  2. 切换到「自定义字段」标签,添加所需的地址字段(如zipcode、address1等);

修改后的注册代码

signup({
  name: `${data.given_name} ${data.family_name}`,
  given_name: data.given_name,
  family_name: data.family_name,
  connection: AUTH0_CONNECTION,
  username: data.email,
  email: data.email,
  password: data.password,
  userMetadata: {
    accept_terms: data.accept_terms.toString(),
    job_title: data.job_title,
    certificate_image_id: data.certificate_image_id,
    company_name: data.company_name,
    phone_number: data.phone_number,
    certificate_image_url: data.certificate_image_url,
    website: data.website,
  },
  // 自定义地址字段直接放在顶层
  zipcode: data.zipcode,
  address1: data.address1,
  address2: data.address2,
  city: data.city,
  country: data.country,
  state: data.state,
})
  .then((response) => {
    console.log("You're successfully Registered!");
  })
  .catch(() => {
    console.log("Error Occured!");
  })
  .finally();

优势

  • 无需序列化/反序列化,字段读取更直观;
  • 不受user_metadata的10个字段限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:31:07