我正在尝试为我的登录组件设置一个 SignUp 方法,当我第一次使用 Firebase 的 SignUp 方法时,它似乎工作正常。当我第一次注销这个新创建的用户并尝试使用电子邮件和密码创建另一个用户(不刷新浏览器)时出现问题,这个用户不会立即在 firebase firestore 数据库中更新,而是承诺将存在但它只会在我单击我的注销方法时解决到数据库。(如果我刷新浏览器就可以了)
这是我的注册功能
const signUp = (e) => {
e.preventDefault();
FirebaseApp.auth()
.createUserWithEmailAndPassword(email, password)
.then((cred) => {
console.log('We are inside the .then')
FirebaseApp.firestore()
.collection("Users")
.doc(cred.user.uid)
.set({
Name: name,
LastName: lastname,
Email: email,
})
.then(function () {
console.log("Stored!");
})
.catch(function (error) {
console.log(error);
});
})
.catch(function (error) {
console.log(error)
}); };
我在我的第一个 .then 中使用了一个 console.log 来检查我是否确实正在经历成功过程,然后我得到了日志,我在第二个 .then 中使用了一个 console.log 。然后检查设置到 db 的数据. 我得到日志,
之后我注销并尝试创建第二个用户,但从现在开始,它只会在我注销时设置数据,而不是在我使用我的注册方法时设置数据。
这是我的 SignOut 功能
<Button
type="submit"
fullWidth
variant="contained"
color="primary"
className={classes.submit}
onClick={() => {
FirebaseApp.auth().signOut();
}}
>
Sign Out
</Button>
我尝试的最后一件事是使用 setTimeout 方法更改我调用与 createUserWithEmailAndPassword 方法平行的 .set 的位置,它可以工作但不是最佳的,因为如果在创建过程中存在延迟,则数据不会有用户id 可用。或者最糟糕的是,如果在注册后正在获取数据它一开始是不可见的。
提前致谢。
江户川乱折腾
相关分类