[英]Can't call firebase database function inside GoogleSignin signIn function
我正在使用react-native-google-signin來實現google登錄功能。 設置完所有配置步驟后,我便可以從GoogleSignin.signIn()。then((user)=> {...}中獲取“用戶”。
現在,我要檢查此用戶是否已經使用了“此” Google帳戶。 因為如果是的話,我不需要在firebase數據庫中創建用戶數據。 但是,如果不是這樣(第一次),我需要在Google登錄功能內創建用戶數據。 這是我的代碼。
import fire from '../../firebase'
.. ..
GoogleSignin.signIn()
.then((user) => {
console.log('get user'); // I can get user here
// This firebase function can't be called (no reaction)
fire.database().ref('Users').child(user.id).once('value', snapshot => {
console.log('inside function'); // can't log it
if(!snapshot.val()) {
console.log('new'); // can't log it
fire.database().ref('Users').child(user.id).child('User_Data').set({
username: user.name,
email: user.email,
avatar: user.photo
});
}
else {
console.log('old'); // can't log it
fire.database().ref('Users').child(user.id).child('User_Data').update({
username: user.name,
email: user.email,
avatar: user.photo
});
}
});
})
.catch((err) => {
console.log('WRONG SIGNIN', err);
})
.done();
我只能獲取“用戶”數據。 我的Firebase身份驗證屏幕中沒有創建新的Google電子郵件。 另外,在我的數據庫中沒有創建新的用戶數據。
是否有人有相同的問題或解決方案? 感謝您的幫助或想法!
我不使用React,所以這可能無濟於事,但是您是否嘗試過將代碼重構為類似的內容;
function googleSignIn() {
GoogleSignin.signIn()
.then(validateSignIn) // Might need to be `this.validateSignIn`
.catch((err) => {
console.log('WRONG SIGNIN', err);
})
.done();
}
function validateSignIn(user) {
console.log('get user'); // I can get user here
// This firebase function can't be called (no reaction)
fire.database().ref('Users').child(user.id).once('value', snapshot => {
console.log('inside function'); // can't log it
if(!snapshot.val()) {
console.log('new'); // can't log it
fire.database().ref('Users').child(user.id).child('User_Data').set({
username: user.name,
email: user.email,
avatar: user.photo
});
}
else {
console.log('old'); // can't log it
fire.database().ref('Users').child(user.id).child('User_Data').update({
username: user.name,
email: user.email,
avatar: user.photo
});
}
}
這樣, validateSignIn
函數就在其自己的函數中,而不是由您的thenable對象封裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.