【发布时间】:2020-06-05 23:51:23
【问题描述】:
我有singUp 功能。我在身份验证部分成功创建了一个新用户。之后我什至可以得到他的uid。但我不知道为什么在集合user 函数中设置一个新文档不起作用。就像它永远不会开始一样。即使.then() 或.catch() 方法也不会显示它们的console.log()。我在另一个项目中使用几乎相同的代码,一切都很好。
export const signUp = (newUser) => {
return (dispatch, getState) => {
firebase.firestore().collection('users').where('nick', '==', newUser.nick).get()
.then(snapshot => {
if (snapshot.empty) {
firebase.auth().createUserWithEmailAndPassword(
newUser.email,
newUser.password
).then((resp) => {
console.log(resp)
console.log(resp.user.uid)
firebase.firestore().collection("users").doc(resp.user.uid).set({
name: newUser.name,
age: newUser.age
}).then(function () {
console.log("Document successfully written!");
}).catch(function (error) {
console.error("Error writing document: ", error);
});
}).then(() => {
dispatch({ type: "SIGNUP_SUCCESS" });
}).catch((err) => {
console.log(err)
let error;
if (err.code === 'auth/email-already-in-use')
error = 'Adres e-mail jest już w użyciu!'
dispatch({ type: "SIGNUP_ERROR", error })
})
} else {
let error = 'Ten nick jest już zajęty!'
dispatch({ type: "SIGNUP_ERROR", error })
}
})
}
}
【问题讨论】:
-
看起来这些日志被打印出来了:
console.log(resp) console.log(resp.user.uid),这也显示了dispatch({ type: "SIGNUP_SUCCESS" });。什么不起作用? -
将用户添加到“用户”集合中。
console.log(resp.user.uid)之后的函数 -
您忘记在
createUserWithEmailAndPassword的第一个then中返回承诺 -
我不明白你的意思...
标签: reactjs firebase google-cloud-firestore