gpt4 book ai didi

javascript - 创建用户后,Firebase v9 auth.currentUser 为 null

转载 作者:行者123 更新时间:2023-12-02 18:33:29 27 4
gpt4 key购买 nike

这是我的 JS 代码:

import { ref } from "vue"
import { projectAuth } from '../firebase/config'
import { getAuth, createUserWithEmailAndPassword, updateProfile } from 'firebase/auth'

const error = ref(null)
const isPending = ref(false)

const signup = async(email, password, displayName) => {
error.value = null
isPending.value = true

try {
const res = createUserWithEmailAndPassword(projectAuth, email, password)
console.log(projectAuth.currentUser)

if (!res) {
console.log('Could not complete the signup')
throw new Error('Could not complete the signup')
}

console.log(projectAuth.currentUser)
await updateProfile(projectAuth.currentUser, {displayName})
error.value = null
isPending.value = false

return res

} catch(err) {
console.log('ERROR: ' + err.message)
error.value = err.message
isPending.value = false
}
}

const useSignup = () => {
return {error, signup, isPending}
}

export default useSignup

每当用户注册时,我的 Vue3 应用程序都会调用此脚本中的注册函数。 createUserWithEmailAndPassword 函数成功并且用户显示在 firebase 中。但我还想为我的用户添加显示名称,因此我尝试使用 updateProfile 函数来执行此操作,但出现了问题。

问题是即使在创建用户后,projectAuth.currentUser 也为空,我不明白为什么?

最佳答案

createUserWithEmailAndPassword() 方法返回一个 promise 。由于您的函数是async,请尝试添加await:

const res = await createUserWithEmailAndPassword(projectAuth, email, password)
console.log(projectAuth.currentUser)

或者,您可以直接从 res 将 User 对象传递给 updateProfile:

const { user } = await createUserWithEmailAndPassword(projectAuth, email, password)

await updateProfile(user, { displayName })

关于javascript - 创建用户后,Firebase v9 auth.currentUser 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69126597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com