Ich habe es also so gemacht, dass ein angemeldeter Benutzer zu einer TabsPage wechselt, aber wenn er nicht angemeldet ist, zur Anmeldeseite. Das Problem ist, dass ich zwei Benutzer habe, einen Kunden und einen Veranstalter. Ich möchte also etwas tun, wenn (user.useType === "customer") zu TabsPage und if (user.useType === "eventorganiser") zu EventTabsPage gehen, andernfalls, wenn kein Benutzer zu LoginPage geht.
Ich versuche einen Benutzer-Firebase-Snapshot, arbeite aber überhaupt nicht, da immer true zurückgegeben wird. Bin ich nah dran Ich habe userType in der Datenbank, die entweder userType: "customer" oder userType: "eventorganiser" ist.
import { Reference } from '@firebase/database-types';
@Component({
templateUrl: 'app.html',
})
export class MyApp {
rootPage: any;
public type : Reference
constructor(platform: Platform,
statusBar: StatusBar,
splashScreen: SplashScreen) {
firebase.initializeApp(firebaseConfig);
this.type = firebase.database().ref("userProfile");
this.type.once("value")
.then(function (snapshot) {
this.type = snapshot.val().userType
});
const unsubscribe: Unsubscribe = firebase
.auth()
.onAuthStateChanged(user => {
if (user && this.type.toString() === "customer") {
this.rootPage = 'TabsPage'
unsubscribe();
}
else if (user && this.type.toString() === "eventorganiser") {
this.rootPage = 'EventTabsPage';
unsubscribe();
}
else {
this.rootPage = 'LoginPage';
unsubscribe();
}
});
Datenbank ist wie unten
{
"userProfile" : {
"3RQOUe9cqcRX2IMy0S290S9trSM2" : {
"birthDate" : "2018-02-20",
"email" : "[email protected]",
"firstName" : "asda",
"lastName" : "dsad",
"userType" : "customer"
},
"CHtJTfDmCgfaMY91ve4oepvIkuc2" : {
"birthDate" : "2018-02-20",
"email" : "[email protected]",
"firstName" : "lk",
"lastName" : "",
"userType" : "eventorganiser"
},
Mein Arbeitscode für alle Benutzer ist unten
const unsubscribe: Unsubscribe = firebase
.auth()
.onAuthStateChanged(user => {
if (user) {
this.rootPage = 'TabsPage';
unsubscribe();
} else {
this.rootPage = 'LoginPage';
unsubscribe();
}
})
Es ist möglich, dass zu dem Zeitpunkt, zu dem Ihre Apps aufrufen:
firebase
.auth()
.onAuthStateChanged(user => {
if (user && this.type.toString() === "customer") {
this.rootPage = 'TabsPage'
unsubscribe();
}
Das:
this.type = firebase.database().ref("userProfile");
this.type.once("value")
.then(function (snapshot) {
this.type = snapshot.val().userType
});
Ist nicht bereit, da es sich um einen asynchronen Aufruf handelt und nicht darauf wartet, dass der Wert zurückgegeben wird, bevor Ihre onAuthStateChanged()
Funktion aufgerufen wird .
Stellen Sie außerdem sicher, dass dies die richtige Referenz ist, da / userType ein generischer Knoten ist.
So habe ich das in der Vergangenheit gemacht:
const unsubscribe: Unsubscribe = firebase
.auth()
.onAuthStateChanged(user => {
if (user) {
firebase.database().ref("userProfile").once("value").then(function (snapshot) {
if (snapshot.val().userType === 'customer') {
this.rootPage = 'TabsPage';
} else {
this.rootPage = 'EventTabsPage'
}
});
} else {
this.rootPage = 'LoginPage';
unsubscribe();
}
});
Nach diesem Ablauf werden zuerst der Benutzer und dann das Benutzerprofil abgerufen und anschließend die Werte überprüft.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen