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

Firebase中从用户对象获取company ID失败问题求助

解决Firebase中无法获取用户companyID的问题

你当前代码的核心问题是:doc(db, 'Users', user.uid)创建的只是Firestore的文档引用对象,不是文档里存储的实际数据,所以直接访问.companyID自然会返回undefined。另外user.uid是同步属性,不需要加await。

按以下步骤修正代码即可获取到companyID:

  1. 先创建用户文档的引用
  2. 用getDoc()异步获取文档快照
  3. 验证文档存在后,从快照中提取数据字段

修正后的完整代码:

const handleSubmit = async (e) => {
  e.preventDefault()
  setError('')
  try {
    const { user } = await signIn(email, password)
    const userID = user.uid // uid是同步属性,不用加await
    const userDocRef = doc(db, 'Users', userID)
    const userDocSnap = await getDoc(userDocRef) // 获取文档的实际数据快照

    if (userDocSnap.exists()) {
      const userData = userDocSnap.data()
      const compID = userData.companyID
      console.log(userID + ' USERID')
      console.log(compID + ' COMPANYID')
      navigate('/Main/Dashboard')
    } else {
      console.log('对应用户的文档不存在')
      setError('用户信息未找到,请检查账号')
    }
  } catch (e) {
    setError(e.message)
    console.log(e.message)
  }
}

关键说明:

  • doc()方法仅生成指向Firestore文档的路径引用,不会自动拉取数据,必须配合getDoc()才能获取文档内容
  • 始终检查文档是否存在(userDocSnap.exists()),避免因文档缺失导致的后续报错
  • 文档中的字段数据需要通过snapshot.data()方法提取后才能访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:05:24