第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Firebase firestore .set(data) 承諾在我退出時(shí)解決

Firebase firestore .set(data) 承諾在我退出時(shí)解決

FFIVE 2022-11-03 10:58:07
我正在嘗試為我的登錄組件設(shè)置一個(gè) SignUp 方法,當(dāng)我第一次使用 Firebase 的 SignUp 方法時(shí),它似乎工作正常。當(dāng)我第一次注銷這個(gè)新創(chuàng)建的用戶并嘗試使用電子郵件和密碼創(chuàng)建另一個(gè)用戶(不刷新瀏覽器)時(shí)出現(xiàn)問題,這個(gè)用戶不會立即在 firebase firestore 數(shù)據(jù)庫中更新,而是承諾將存在但它只會在我單擊我的注銷方法時(shí)解決到數(shù)據(jù)庫。(如果我刷新瀏覽器就可以了)這是我的注冊功能const signUp = (e) => {e.preventDefault();FirebaseApp.auth()  .createUserWithEmailAndPassword(email, password)  .then((cred) => {    console.log('We are inside the .then')    FirebaseApp.firestore()      .collection("Users")      .doc(cred.user.uid)      .set({        Name: name,        LastName: lastname,        Email: email,      })      .then(function () {        console.log("Stored!");      })      .catch(function (error) {        console.log(error);      });  })  .catch(function (error) {    console.log(error)  }); };我在我的第一個(gè) .then 中使用了一個(gè) console.log 來檢查我是否確實(shí)正在經(jīng)歷成功過程,然后我得到了日志,我在第二個(gè) .then 中使用了一個(gè) console.log 。然后檢查設(shè)置到 db 的數(shù)據(jù). 我得到日志,之后我注銷并嘗試創(chuàng)建第二個(gè)用戶,但從現(xiàn)在開始,它只會在我注銷時(shí)設(shè)置數(shù)據(jù),而不是在我使用我的注冊方法時(shí)設(shè)置數(shù)據(jù)。這是我的 SignOut 功能<Button      type="submit"      fullWidth      variant="contained"      color="primary"      className={classes.submit}      onClick={() => {        FirebaseApp.auth().signOut();      }}    >      Sign Out    </Button>我嘗試的最后一件事是使用 setTimeout 方法更改我調(diào)用與 createUserWithEmailAndPassword 方法平行的 .set 的位置,它可以工作但不是最佳的,因?yàn)槿绻趧?chuàng)建過程中存在延遲,則數(shù)據(jù)不會有用戶id 可用?;蛘咦钤愀獾氖牵绻谧院笳讷@取數(shù)據(jù)它一開始是不可見的。提前致謝。
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

考慮到您的情況,我建議您稍微更改將經(jīng)過身份驗(yàn)證的信息發(fā)送到 Firestore 的方式。您的代碼應(yīng)如下所示。


export const signupUser = (userDetails) => {

    const {firstName, lastName, email, password} = userDetails

    return () => {

        firebase.auth().createUserWithEmailAndPassword(email, password)

        .then(() => {

            firebase.firestore().collection('users').doc(firebase.auth().currentUser.uid)

            .set({

                firstName: firstName,

                lastName: lastName,

                email: email

            })

            .catch(error => {

                console.log('Something went wrong with added user to firestore: ', error);

            })

        })

        .catch(error => {

            console.log('Something went wrong with sign up: ', error);

        }

    },

};

雖然此代碼未經(jīng)測試,但它基于這篇非常好的文章之一:如何驗(yàn)證用戶身份并在 Cloud Firestore 中創(chuàng)建相應(yīng)的文檔。


除了上述選項(xiàng)之外,您還可以嘗試使用云功能,一旦創(chuàng)建用戶,它將向 Firestore 發(fā)送信息。


export const newAccountCreated = functions.auth.user().onCreate(user => {

    userDoc = {'email' = user.data.email, 

               'displayName' = user.data.displayName}

    admin.firestore().collection('users').doc(user.data.uid)

    .set(userDoc).then(writeResult => {

        console.log('User Created result:', writeResult);

        return;

    }).catch(err => {

       console.log(err);

       return;

    });

});

使用 Cloud Funcrion 也可能是一種替代方法,因?yàn)樗鼤谀看蝿?chuàng)建用戶時(shí)運(yùn)行。


這兩個(gè)選項(xiàng)應(yīng)該可以幫助您創(chuàng)建登錄用戶,并幫助您避免在嘗試創(chuàng)建新用戶時(shí)需要注銷的問題。


讓我知道這些信息是否對您有幫助!


查看完整回答
反對 回復(fù) 2022-11-03
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號