【发布时间】:2020-10-13 00:55:22
【问题描述】:
我正在尝试将用户保存到我的 Firestore 中的集合中。似乎正在创建用户,我可以在Authentication 选项卡中看到它们,但是它们没有保存到我的 Firestore 中的收藏中。我的控制台内似乎也没有任何错误。我已经为此苦苦挣扎了几个小时,我什至不确定如何调试它。
export const authMethods = {
signup: (email, password, setErrors, setToken) => {
firebase
.auth()
.createUserWithEmailAndPassword(email, password)
// make res asynchronous so that we can make grab the token before saving it.
.then(async res => {
const token = await Object.entries(res.user)[5][1].b
// set token to localStorage
await localStorage.setItem('token', token)
// grab token from local storage and set to state.
setToken(window.localStorage.token)
const userUid = firebase.auth().currentUser.uid
const db = firebase.firestore()
db.collection('/users')
.doc(userUid)
.set({
email,
password,
})
console.log(res)
})
.catch(err => {
setErrors(prev => [...prev, err.message])
})
},
....
}
有什么想法吗?
【问题讨论】:
-
您忽略了
db.collection().doc().set()返回的承诺。它可能会失败,你永远不会知道。 -
什么意思?能给我举个例子吗?
-
您已经在处理由
createUserWithEmailAndPassword返回的承诺。对set()做同样的事情。这是标准的 JavaScript。 -
把你的
db.collection('/users').doc(userUid).set({email,password,})改成db.collection('/users').doc(userUid).set({email,password,}).then().catch((err) => console.log(err))这样的东西,这样你就可以处理你的promise并检查它是否有任何错误。 -
这是我最后做的,错误来自数据库安全规则
标签: javascript firebase google-cloud-firestore firebase-authentication