2016-12-08 1 views
1

Ich versuche eine Funktion zu schreiben, die prüft, ob eine E-Mail mit meiner Firebase App (mit Javascript/Web) registriert ist, bevor ich mit dem Anmeldeprozess fortfahre (wenn die E-Mail nicht registriert ist).Firebase - Was ist der effizienteste Weg zu prüfen, ob eine E-Mail registriert ist?

Ich habe einen Knoten namens active_emails erstellt, den ich mit registrierten E-Mails füllen wollte (wie ein Array). Ich würde die E-Mail gegen diese Liste überprüfen und wenn es nicht existierte, würde ich dem Benutzer erlauben, mit der Registrierung fortzufahren.

Ich sehe von der Antwort hier: Proper way to store values array-like in Firebase, dass Firebase Schlüssel innerhalb des Arrays erstellt. Eine normale Javascript-Array-Überprüfung funktioniert also nicht. Ich verstehe, wie die obige Antwort funktioniert, aber ich frage mich, da ich im Grunde die E-Mails von registrierten Firebase-Benutzern durchsuche, gibt es eine andere Möglichkeit, diese Überprüfung durchzuführen?

Bin ich richtig in der Annahme, dass die obige Antwort erfordert Firebase zu kompilieren und senden Sie eine Reihe von E-Mails zurück an den Benutzer Client-Seite? Dies scheint sich auf die Leistung auszuwirken (wenn es Hunderttausende oder Millionen von E-Mails in der Datei gibt), und würde es alle Benutzer-E-Mails dem Client aussetzen? Gibt es eine andere Möglichkeit zu überprüfen, ob ein Benutzer registriert ist oder nicht, vielleicht etwas wie eine Registrierung versuchen und dann einen doppelten E-Mail-Fehler (obwohl das klingt wie eine chaotische Möglichkeit, dies zu tun).

Die Top-Antwort hier: How to find out if an email is already registered with Firebase Simple Login? schlägt fetchProvidersForEmail als eine Möglichkeit, mit der überprüft, ob eine E-Mail registriert ist, aber diese Antwort ist für Android und ich weiß nicht, ob es möglich ist, mit Javascript/Web, so etwas zu tun .

Ich habe versucht hier, um diese Methode zu integrieren:

function checkEmail(){ 
     firebase.database().ref().fetchProvidersForEmail("[email protected]").once("value", function(snapshot) { 
     console.log(snapshot); 
    }); 
} 

Aber es zeigt den Fehler: firebase.database(...).ref(...).fetchProvidersForEmail is not a function. Hat jemand eine Vorstellung davon, wie dieser Check am besten durchgeführt werden kann?

Vielen Dank im Voraus!

+1

Die createUserWithEmailAndPassword Funktion löst einen Fehler, wenn die E-Mail-Adresse ist bereits registriert, Auth/E-Mail-bereits-in-Einsatz. Kannst du das benutzen? – Jay

Antwort

Verwandte Themen