Ho un database con 2 oggetti. Ecco come si presenta:Firebase Angularfire2 verifica se l'utente esiste nel database
users
- KEY
login: "xexe"
password: "123"
- KEY
login: "dede"
password: "123"
Ora sto controllando se l'utente esiste nel database
constructor(private af: AngularFire) {
this.users = af.database.list('/users');
}
registerUser(login: string, password: string) {
this.af.database.list('/users', {
query: {
orderByChild: 'login',
equalTo: login
}
}).subscribe(response => {
if(response.length === 0) {
console.log("User does not exist");
//here i will add a user
} else {
console.log("Users exists");
}
})
}
Qual è il problema?
Proviamo a registrare un utente con login "dede" (utente dovrebbe esiste)
Quando clicco un pulsante Invia prima volta, la console mostra: Users exists
-> beh, questo è un bene.
Il problema è quando clicco il presentare la seconda volta (senza aggiornare pagina web)
Poi mi console.log mostra due messaggi
User does not exist
User exists
e che sarebbe aggiungere un nuovo utente ciò che non dovrebbe essere fatto. Perché la seconda volta la funzione di iscrizione esegue iterate su ogni riga? Come sistemarlo?
Deve essere "if (data. $ Valore! = Null) {', invece di 'if (dati. $ Valore! == null) {'? – alltej
Sto usando angularFire2. Questo controllo per l'oggetto non sembra funzionare. – alltej
anche io devo fare questo '' const user = this.af.database.object ('users/$ {login}', {preserveSnapshot: true}); '' per farlo funzionare e usare 'data.val () 'per valutare – alltej