Firebase从帐户创建中获取UID

iaqfqrcu  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(116)

在创建一个帐户,我需要做2个集合1为用户1为公司。在每一个,我需要捕捉UID。我只是似乎不能抓住它。我一直得到未定义时,console.log它。
分量

const handleSubmit = async (e) => {
        e.preventDefault()
        setError('')
        try {
            await createUser(email, password).then(() => {
                if (false) throw Error('Error')
                //NEED Get UserID
                addDoc(collection(db, 'Companies'), {
                    name: company,
                    //owner: userID,
                    users: [],
                    assets: []
                }).then((docRef) => {
                    let companyID = docRef.id
                    addDoc(collection(db, 'Users'), {
                        name: name,
                        email: email,
                        company: [company],
                        companyID: [companyID]
                        //UserID: UserID
                    })
                })
            })

身份验证上下文

export const AuthContextProvider = ({ children }) => {
    const [user, setUser] = useState({})
    const createUser = (email, password) => {
        return createUserWithEmailAndPassword(auth, email, password)
    }

我已经尝试了firebase文档中的所有方法,但我相信由于我使用上下文,它处理数据的方式可能会有点不同。

qf9go6mv

qf9go6mv1#

createUser()函数返回一个UserCredential对象。您可以从中读取用户的UID。请尝试如下所示重构代码:

const handleSubmit = async (e) => {
  e.preventDefault()
  setError('')

  const { user } = await createUser(email, password)

  const docRef = await addDoc(collection(db, 'Companies'), {
    name: company,
    owner: user.uid,
    users: [],
    assets: []
  })

  await addDoc(collection(db, 'Users'), {
    name: name,
    email: email,
    company: [company],
    companyID: [docRef.id]
    UserID: user.uid
  })
}

相关问题