【问题标题】:firestore is adding data twice and is not letting me have UIDfirestore 两次添加数据并且不让我拥有 UID
【发布时间】:2019-01-12 15:44:30
【问题描述】:

您好,我正在尝试找到一种方法,可以在 Firestore 上添加一次数据,但它会不断添加两次具有不同唯一 ID 的数据,而且我无法找到将用户 UID 输入为“文档 ID"

这是我的代码,它使用不同的唯一 ID 而不是 user.uid 两次添加数据

   registerBtn.addEventListener('click' , e => {

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        db.collection("users").add({
          FirstName: firstName,
          Middle_Name: middleName,
          Last_Name: lastName,
          Email: email,
      })

      console.log('data successfully added');

      } else {
        console.log('something went wrong');
      } 
  })

});

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    onAuthStateChanged 侦听器可能会被多次调用。这是预期的行为,您的代码应该准备好处理它。这意味着代码本质上必须是幂等的:多次调用它应该有一个明确定义的结果。

    对于您来说,这似乎是您想要一个特定于用户的文档,即使您的 onAuthStateChanged 侦听器被多次调用。一个简单的方法是使用用户的 UID 作为文档 ID。

    代码如下所示:

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        db.collection("users").doc(user.uid).set({
          FirstName: firstName,
          Middle_Name: middleName,
          Last_Name: lastName,
          Email: email,
        }).then(function() {
          console.log('data successfully added');
        }};
      } else {
        console.log('No user signed in');
      } 
    })
    

    我注意到您在单击处理程序中附加了侦听器。每当您附加一个侦听器时,请立即考虑何时删除该侦听器。仅使用您共享的代码,如果用户单击两次,您将得到两个监听器。

    【讨论】:

    • 您好,再次感谢您,我一直在尝试给您投赞成票,它说我需要一个特定的状态才能直观地计数
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 2016-12-08
    • 2022-06-11
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多