【发布时间】:2020-05-20 12:14:43
【问题描述】:
我有一个 firebase firestore 数据库,我想创建一个用户,然后将一条记录添加到数据库中,并将文档名称作为 uid。
这不会在控制台中抛出任何错误,但也不会创建记录?
firebase.auth().createUserWithEmailAndPassword(
customerEmail.current.value,
customerPassword
).then(() => {
console.log("UID!!!!!!!!!!!!!!!!!!!!!!!", firebase.auth().currentUser.uid)
firebase
.firestore()
.collection('sessions')
.doc(firebase.auth().currentUser.uid).set(
{...context.state}
)
})
【问题讨论】:
-
您的代码应该可以工作吗?您有任何特定的安全规则吗?如果添加
catch()块,您会看到错误吗?请注意,您可以使用createUserWithEmailAndPassword()方法返回的UserCredential而不是firebase.auth().currentUser.uid。 -
确实应该!我还没有任何安全规则——但我通过将 user.user.uid 作为 uid 传递来解决了这个问题——这很奇怪!
-
实际上应该在我的第一条评论中阅读“您的代码应该可以工作。您有...”第一句末尾没有问号!根据您的回答,通过执行
user.user.uid,您正在使用UserCredential。但通常情况下,您之前的代码也应该可以工作,因为使用createUserWithEmailAndPassword()方法:“成功创建用户帐户后,此用户也将登录到您的应用程序。”确实很奇怪.... -
是的,因为您不应该将回调传递给
set()方法,而是使用then(),因为它返回一个Promise。看这个例子:firebase.google.com/docs/firestore/manage-data/… -
你可以尝试使用onAuthStateChange,从currentUser获取uid
标签: javascript reactjs firebase google-cloud-firestore firebase-authentication