繁体   English   中英

firebase/firestore 将用户保存到集合

[英]firebase/firestore save user to collection

我正在尝试将用户保存到我的 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])
      })
  },
 ....
}

有任何想法吗?

localStorage.setItem中删除await它不是异步 function。

您还需要将 await 添加到db.collection("/users").doc(userUid)


这是您可以做的另一种方法。 让云 function 为您处理。

每当创建用户时,都会触发以下 function。

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,
    });
  });

如果您需要有关云功能的更多信息,请阅读以下内容。

https://firebase.google.com/docs/functions/get-started

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM