Я использую Firebase Firestore, я использую три ожидания. Логика c заключается в том, что выходные данные не должны возвращаться, если в коллекции Firestore ничего нет, поэтому выходные данные должны быть установлены только одной функцией. Мне интересно, вызывают ли эти три ожидания его вечное ожидание или есть что-то, чего я не понимаю в асинхронном / ожидании. Я новичок в этом, поэтому любые ресурсы или ответы помогут. Спасибо!
componentDidMount() {
// sends to different home screen based on authentication
async function authSwitch(cred) {
var output;
await firebase.firestore().collection('Students').where("uid", "==", cred).get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
output = "student";
});
});
await firebase.firestore().collection('Admin').where("uid", "==", cred).get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
console.log(doc.id);
output = "admin";
});
});
await firebase.firestore().collection('Preceptors').where("uid", "==", cred).get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
output = "preceptor";
});
});
return output;
}
firebase.auth().onAuthStateChanged(user => {
if(user) {
console.log(user.uid);
console.log(authSwitch(user.uid));
this.props.navigation.navigate(authSwitch(user.uid));
}
else {
this.props.navigation.navigate("Auth");
}
});
}
render() {
return (
<View style={styles.container}>
<Text>Loading...</Text>
<ActivityIndicator size = "large"></ActivityIndicator>
</View>
)
}
}