【问题标题】:firebase/firestore save user to collectionfirebase/firestore 将用户保存到集合
【发布时间】: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


【解决方案1】:

localStorage.setItem 中删除await 这不是异步函数。

您还需要将 await 添加到 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,
    });
  });

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

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

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 2021-12-30
    • 2021-03-14
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2020-08-10
    相关资源
    最近更新 更多