我正在尝试将用户保存到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])
})
},
....
}
有什么想法吗?
答案 0 :(得分:1)
从await
中删除localStorage.setItem
,这不是一个异步函数。
您还需要将等待添加到db.collection("/users").doc(userUid)
这是您可以执行的另一种方法。让云功能为您解决这个问题。
无论何时创建用户,都会触发以下功能。
export const onUserCreate = functions.auth
.user()
.onCreate(async (user, context) => {
await admin.firestore().collection("users").doc(user.uid).set({
id: user.uid,
emailAddress: user.email,
verified: user.emailVerified,
});
});
如果您需要有关云功能的更多信息,请阅读以下内容。