您好我在找到一种方法让auth状态更改自动指向登录用户的页面时遇到问题。在创建用户之前,我想将用户配置文件推送到我的数据库。
所以我创建了用户,然后用这段代码添加到数据库
firebase.auth().createUserWithEmailAndPassword(email, password).then(function (user){
firebase.database().ref('/Profiles').child(user.uid).set({
address: ''
})
}).catch(function(error){
let errorCode = error.code;
let errorMessage = error.message;
navigator.notification.alert('Error: Code: ' + errorCode + ', ' + errorMessage,false,'Error','Done');
});
但是,一旦createUserWithEmailAndPassword成功,这个onAuthStateChanged函数就会在数据库' Profile'之前导航到新页面。记录已添加。
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
let u = firebase.auth().currentUser;
window.location = 'loggedIn.html';
}
});
我怎样才能使我的onAuthStateChanged函数在导航离开页面之前等待添加数据库记录
注意::我想保留onAuthStateChanged,这样如果用户登录会话,他们将自动定向到loggedIn页面
答案 0 :(得分:0)
保存到数据库后,您可以尝试注册onAuthStateChagned处理程序。
答案 1 :(得分:0)
我有同样的问题。我尝试了几种方法,但是由于某种原因一个简单的setState解决了这个问题。
尝试为createUserWithEmailAndPassword函数内的内容设置状态。例如:
firebase.auth().createUserWithEmailAndPassword(email, password).then(function (user){
firebase.database().ref('/Profiles').child(user.uid).set({
address: ''
})
// SET Some state
this.setState({ error: null, isLoading: false });
// Besides that I show the feedback as an alert (just in case you think it's a good idea)
Alert.alert(
`Welcome ${user.user.name}!`,
'Your account has been successfully created.',
[
{
text: 'OK',
onPress: () =>
navigation.navigate('Main'),
},
]
);
}).catch(function(error){
let errorCode = error.code;
let errorMessage = error.message;
navigator.notification.alert('Error: Code: ' + errorCode + ', ' + errorMessage,false,'Error','Done');
});